2011-08-17 65 views
2

我正在将JBoss AS5应用程序迁移到AS7。由于AS7重新设计的模块化类加载设计,我遇到了NoClassDefFoundErrors。我正在关注如何解决类加载异常https://docs.jboss.org/author/display/AS7/Developer+Guide#DeveloperGuide-Resolveclassloadingexceptionsandothererrors的JBoss开发人员指南,您可以在应用程序的MANIFEST.MF文件中执行诸如添加模块作为依赖项的操作,但是我遇到了很多麻烦。我尝试使用MANIFEST.MF解决我的类加载错误或手动将jar复制到我的应用程序的WEB-INF/lib /目录似乎工作。Eclipse构建路径/ JBoss AS7类加载异常问题

在Eclipse中,我尝试右键单击我的项目并手动将我的类指定的类添加到我的项目的JAVA BUILD PATH中。我能够使用这种方法消除所有的类加载错误。我的问题是 - Eclipse如何存储构建路径信息并将其提供给我的Maven构建?是使用JAVA BUILD PATH信息在文件系统的某处创建MANIFEST.MF或jboss-deployment-structure.xml文件?我想找到Eclipse正在使用的任何文件来存储JAVA BUILD PATH,以便我可以部署我的应用程序,而无需通过Eclipse手动添加依赖项到我的JAVA BUILD PATH。谢谢。

+0

这个新模块的东西将是一个头疼一两年即将到来。希望我对你有一个答案:(。 –

+0

)你好,你问这个问题已经有一段时间了。你还有问题吗?在这种情况下,请用你的应用程序的一个小目录结构更新你的问题,我可以尝试给你一个更准确的答案。 – rbento

回答

0

在开发环境中混淆MANIFEST.MF听起来很可怕。对于自动依赖关系管理,使用Maven(它不是理想的工具,但是它是标准的,有很好的Eclipse插件,因此毕竟使用它并不是那么痛苦)。

Java构建路径由Eclipse存储在项目目录中的.classpath文件中(注意开始处的点)。该文件看起来或多或少像:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/> 
    <classpathentry kind="lib" path="lib/oscache-2.1.jar"/> 
    <classpathentry kind="lib" path="lib/proxool-0.8.3.jar"/> 
    <classpathentry kind="lib" path="db/derby.jar"/> 
    <classpathentry kind="lib" path="db/derbyclient.jar"/> 
    <classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/> 
    <classpathentry kind="lib" path="lib/log4j-1.2.16.jar"/> 
    <classpathentry kind="lib" path="lib/slf4j-api-1.6.1.jar"/> 
    <classpathentry kind="lib" path="lib/slf4j-log4j12-1.6.1.jar"/> 
    <classpathentry kind="output" path="bin"/> 
</classpath> 

所以可以用一个简单的脚本,如果你有依赖关系的列表产生。

请记住,Eclipse喜欢缓存的东西。因此,当您更改.classpath文件时,手动刷新您的项目(F5),否则您将看不到任何更改。