9

我试图四处寻找可能对我有帮助的帖子,但找不到。

我正在为 JBoss4 服务器部署一个耳朵,自从我添加了一个新项目后,我就开始遇到这个问题。

这个新项目在eclipse中定义为Java项目,EAR项目有一个EJB项目,该项目将新Java项目作为其依赖的项目之一——如果通过eclipse本地部署在JBoss上,没有问题,一切顺利

但是,当在测试环境(eclipse 之外)中部署到 JBoss 时,在新 Java 项目中定义的类之一上不断出现 java.lang.NoClassDefFoundError。

我在 EAR 文件中查看了 jar(EJB 项目),然后在 jar 中,我可以看到新 Java 项目中的目录结构和所有类文件 - 即。它抱怨的类就在 EAR->JAR 中,并且与它正在寻找的确切结构相匹配。

我迷失了我还能看到的东西。

任何指针都非常感谢!

谢谢

4

5 回答 5

7

如果某些类的编译方式不匹配,您经常会收到此错误。例如,如果您在 JDK 的更高版本中编译了一些类而没有设置 java 合规级别,并且您正在使用早期版本运行它。

我的建议是检查你运行 JBoss 的 JDK,然后检查你是如何编译你的类的

于 2011-01-14T05:55:33.177 回答
2

我在 JBoss 4: ClassNotFoundException 和 NoClassDefFoundError 在运行时遇到了这样的问题,即使代码编译得很好。我花了4个小时才找出原因。

我项目的 BuildPath 没问题,问题实际上出在 JBoss 的 ClassPath 上。我通过执行以下操作解决了它:JBoss 4.2 RunTime Server > 打开启动配置 > 编辑配置 > ClassPath > 添加 JAR 和项目以使用“添加 JAR”/“添加项目”链接到 JBoss。

由于 BuildPath,Eclipse 知道 JAR 中的类和相关项目,因此 IDE 中没有错误,但 JBoss 服务器不知道在哪里可以找到这些类......

于 2014-05-21T07:19:19.870 回答
1

如果您有多个 war/ear 文件,这也可能是由于类加载器隔离问题

于 2011-01-14T07:51:39.970 回答
0

检查 中的属性“类路径:” META-INF/MANIFEST.MF

于 2011-01-14T04:54:24.850 回答
0

检查你的耳朵文件。像这样的结构?

myapp.ear
|+ META-INF
   |+ applications.xml and jboss-app.xml
|+ myapp.war
   |+ web pages and JSP /JSF pages
   |+ WEB-INF
      |+ web.xml, jboss-web.xml, faces-config.xml etc.
      |+ lib
         |+ tag library JARs
      |+ classes
         |+ servlets and other classes used by web pages
|+ myapp.jar
   |+ EJB3 bean classes
   |+ META-INF
      |+ ejb-jar.xml and persistence.xml
|+ lib
   |+ Library JARs for the EAR

如果没有,你应该重新打包你的ear文件。

于 2011-01-14T04:50:16.820 回答