Jar内战 - NoClassDefFound异常

时间:2009-08-10 19:33:51

标签: jboss jar war classloader

我在jboss上部署了2个应用程序作为app1.war和app2.war。这两个应用程序使用一个常见的java包,比如myPackage。早些时候我的战争看起来像这样

=============================================== =========================

app [12] .war /
----- web.xml
----- app特定的类(.class文件之类)
----- appClass1.class
----- appClass2.class等。
----- WEB-INF /
----- myPackage /(这只是战争下的文件夹,不是jar包) ----------属于普通包的类如
---------- common_class1.class
---------- common_class2.class
----------
----------。

=============================================== ========================

但是这会产生问题,因为两个公共类都会在两个war文件中具有完全相同的名称等。所以我决定将公共包编译为jar文件并将其放在WEB-INF / lib中的每个war文件中,现在我的war文件看起来像

=============================================== =============================

应用程序[12]的.war /
----- web.xml中
----- app特定的类(.class文件之类)
----- appClass1.class
----- appClass2.class等。
----- WEB-INF /
---------- LIB /
---------- myPackage.jar(现在这是一个jar包)
---------- mypackage中/
---------------属于普通包的类如
--------------- common_class1.class
--------------- common_class2.class
---------------。
---------------。

=============================================== =============================

但现在我的app特定类需要使用myPackage.jar访问类文件抛出java.lang.ClassNotFoundException异常。

我用谷歌搜索了3-4个令人沮丧的时间,但没有解决这个特殊问题。我可能做了一些非常错误的事情。任何人都可以帮助我吗?

PS:我正在JBOSS 4.2.3中部署我的战争

非常感谢。 〜马诺吉

1 个答案:

答案 0 :(得分:0)

JBoss在类加载方面有自己的版本依赖特性。这些链接可能对您有所帮助:

但是如果你的两个WAR需要相同版本的公共包,你可以将该包的JAR放入相关服务器配置的lib文件夹(例如server / default / lib),而不是将它放在WAR文件中。 / p>