mvn jboss:使用NoClassDefFoundError进行部署失败

时间:2013-04-04 18:48:04

标签: maven deployment jboss maven-plugin noclassdeffounderror

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

此依赖项是使用Compile作用域声明的。是否有我应该使用的另一个范围,以便我的依赖关系也部署到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

1 个答案:

答案 0 :(得分:1)

据我所知,您已将EJB打包为jar文件。这意味着没有任何提供的依赖项与独立jar一样。

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

  1. 将它们打包为ear并将这些依赖项放在ear/lib中。有关详细信息,请参阅Maven EAR Plugin

  2. 将它们打包为war并将这些依赖项放在WEB-INF/lib中。有关详细信息,请参阅Maven WAR Plugin

  3. 将它们打包为jar,并将这些依赖项放在classpathapplication server lib中。请参阅您的应用程序服务器文档。

  4. <强>编辑: 如果您使用JavaEE 6,则可以将EJB打包为war文件。 The Java EE 6 Tutorial: Packaging Enterprise Beans in WAR Modules告诉我们

      

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

         

    要将enterprise bean类文件包含在WAR module中,类文件应位于WEB-INF/classes目录

         

    要在JAR file中加入包含enterprise bean的{​​{1}},WAR module添加到WAR模块的JAR目录中< /强>

         

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

    我希望这可能有所帮助。