2011-06-28 53 views
2

我有这3个Java项目:NoClassDefFoundError的错误

ProjectA 
ProjectAEAR 
ProjectB 

项目A具有实例化类项目B 项目A的也有实例化一个主类和测试那个类的项目A类。

如果我运行主类,一切都很好,预期的结果将得到处理。现在

,对项目A我已经创建了一个实例化以前的项目B类的网络服务,当我发布ProjectAEAR项目,并调用web服务我得到以下错误:

org.apache.axis2.jaxws .WebServiceExceptionLogger日志一个java.lang.NoClassDefFoundError throwable被捕获。

我得到这个错误的ProjectB类被实例化的线上。

项目A设置:

Java Build Path -> Projects: ProjectB 
Java Build Path -> Libraries: All JARS needed by project B 

ProjectAEAR设置:

Java EE Module Dependencies -> ProjectA, ProjectB, JARS needed by projectB (In Lib Dir checkbox selected) 

项目B设置:

Java Build Path -> Projects: nothing 
Java Build Path -> Libraries: All JARS needed by project B 

请告诉我。

谢谢

+0

试着找出,*哪些*类没有被发现,如果它是你的一个类或库中的一个类。 –

+0

未找到的类是我的项目之一,projectB之一。 我已经去了我的工作区上的ProjectA文件夹,并且确实在我的“ProjectA文件夹\ sBankaplus \ WebContent \ WEB-INF \ classes”中,projectB类(更精确地说是发生错误的那个类)不存在 – RedEagle

回答

1

请检查您的classpath为您的j2ee应用服务器。我怀疑你的应用服务器有一个替代或冲突的JAR优先于你的EAR中提供的类路径。 基本步骤 - 打开您的ProjectA和ProjectB,并查看每个JAR。然后将其与您的应用服务器提供的内容进行比较。

假设你有过,你可以添加代码控制一个try /终于在相关线路阻断抛出异常,并使用这个片段的模块中显示,其中的文件是从加载: http://snippets.dzone.com/posts/show/3719

你可能使用调试类加载器选项开始您的单元测试有助于准确诊断加载依赖项的位置。 (使用-verbose:class选项)。

+0

使用片段,我在放置代码片段的行上得到相同的NoClassDefFoundError错误! – RedEagle

1

我会把这个作为评论,但显然我没有足够的声誉。

我不能给你一个直接的答案,但我的建议是这样的:将你的EAR项目从Eclipse导出为EAR文件(我假设这是基于你的设置信息的Eclipse)。然后检查生成的文件并检查实际构建的内容。可能某些文件未被导出。也许你需要检查项目属性下的一些复选框 - > Java Build Path - > Order and Export。

正确设置构建和导出Eclipse项目的系统并不复杂,例如,请参阅如何在此处正确设置WAR项目(与您的EAR项目不同,但实际上您可能不需要EAR?) :Eclipse WTP deployment of build path dependencies

相关问题