0

使用 JBoss Maven 插件将 EJB 项目部署到 JBoss 时,我在 JBoss 的控制台上收到关于此 EJB 项目的依赖项之一中的类的 NoClassDefFoundError。

这个依赖是用编译范围声明的。我应该使用另一个范围以便我的依赖项也部署到 JBoss 吗?或者我应该如何解决这个问题?

错误如下所示:

DEPLOYMENTS IN ERROR:
  Deployment "vfszip:/Users/hordine/projects/SoftBudget/soft-budget-ejb/target/soft-budget-ejb.jar/" is in error due to the following reason(s): java.lang.NoClassDefFoundError: br/com/pedra/j2eepatterns/facade/IEntityService
4

1 回答 1

1

我了解到您已将 EJB 打包为 jar 文件。这意味着没有任何提供的依赖项与独立 jar 相同。

AFAIU,可能有以下3种可能的方式:-

  1. 将它们打包为 anear并将这些依赖项放入ear/lib. 请参阅Maven EAR 插件了解更多信息。

  2. 将它们打包为 anwar并将这些依赖项放入WEB-INF/lib. 请参阅Maven WAR 插件了解更多信息。

  3. 将它们打包为 anjar并将这些依赖项放在classpathorapplication server lib中。请参考您的应用服务器文档。

已编辑: 如果您使用的是JavaEE 6,则可以将其打包EJBwar文件。Java EE 6 教程:在 WAR 模块中打包企业 Bean告诉我们:

企业 bean 通常提供 Web 应用程序的业务逻辑。在这些情况下,将企业 bean打包到Web应用程序的 WAR 模块中可以简化部署和应用程序组织。企业 bean 可以作为 Java 编程语言类文件打包在 WAR 模块中,也可以打包在捆绑在 WAR 模块中的 JAR 文件中。

enterprise bean在 a 中包含类文件WAR module类文件应该在WEB-INF/classes目录中。

要在 aJAR file中包含包含 enterprise beans 的 a WAR module请将 添加JARWEB-INF/libWAR 模块的目录中

包含企业 bean 的 WAR 模块不需要ejb-jar.xml部署描述符。如果应用程序使用ejb-jar.xml,它必须位于WAR模块的WEB-INF目录中。

我希望这可能会有所帮助。

于 2013-04-05T02:57:57.557 回答