2

我有一个带有两个普通库的 EAR。其中之一是 scala 库。如果我使用 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.

lib上网查了一下,发现Java EE 6 / Glassfish 3.x 对库的处理变得更加严格,再把它们添加到耳朵里面的文件夹是不够的。只有作者没有提到现在需要什么。

我找到<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 回答