2

2 つのプレーン ライブラリを含む EAR を取得しました。それらの 1 つはスカラ ライブラリです。Netbeans を使用して EAR をデプロイすると、期待どおりに動作します。これは開発には問題ありませんが、最終製品はコマンド ライン経由でデプロイできる必要があります。このために私は使用します:

asadmin --user … deploy --upload ./target/…-ear.ear

これは失敗します:

org.glassfish.api.admin.CommandException: remote failure: Error occurred during deployment: Exception while deploying the app […-ear] : C:\Work\Workspa
ces\…\Glassfish\…\applications\scala-library-2.8.0.jar. Please see server.log for more details.
Befehl deploy fehlgeschlagen.

ネットで調べてみると、Java EE 6/Glassfish 3.x でライブラリの扱いが厳しくなりlib、ear 内のフォルダに追加するだけでは足りなくなっていることがわかりました。著者だけが、今何が必要かについて言及することを怠っていました。

<module><java>の新しいエントリを見つけましMETA-INF\application.xmlたが、それも役に立ちませんでした:

  <module>
    <java>scala-library-2.8.0.jar</java>
  </module>

質問: Java EE 6 / Glassfish 3.x の EAR ファイルにライブラリを追加するために何をしなければならないか知っている人はいますか?

PS: 私はビルドに Maven を使用しています - それが違いを生む場合。

4

1 に答える 1

3

まあ、私は自分で解決策を見つけたようです(再び)。デプロイの最後library-directoryエントリを追加すると、次のように実行されます。META-INF\application.xml

  <library-directory>lib</library-directory>
</application>

奇妙なことにlib、のデフォルトはlibrary-directory. したがって、デフォルトを正しく処理していない Glassfish 自体のバグに違いないと思います。Maven を使用する場合は、ライブラリが適切な場所に配置されるように、必ず使用bundleDirしてください。pom.xml

        <jarModule>
          <groupId>org.scala-lang</groupId>
          <artifactId>scala-library</artifactId>
          <bundleDir>lib</bundleDir>
        </jarModule>
于 2011-01-18T14:50:23.057 に答える