为什么JBoss将JAR名称添加到我的Java包名称中?

时间:2011-10-04 22:32:28

标签: java jboss classloader

这与JBoss 5.1.0有关:

我习惯于将JAR直接放在我的EAR下面,然后让课程被选中。当ClassLoader执行诊断转储时,它会列出耳朵下的所有JAR,然后列出在所述JAR中找到的所有Java包。

我有这个档案jsqlparser-bin.jar,尽管属于EAR,却被错误地列为JAR。但是,它的包被发现,但它们都带有JAR的名称!因此,它不会列出net.sf.jsqlparser.schema这样的包,而是列出jsqlparser-bin.jar.net.sf.jsqlparser.schema

我还在转储中注意到其他存档前置包名称,例如jaxb-impl.jar.com.sun.xml.bind.api。这让我相信,如果同一个软件包包含在多个JAR中,那么JBoss会进行一些创意重命名,因此需要预先添加。但是,如果我从EAR中完全删除jsqlparser-bin.jar,则不会转储任何版本的软件包。所以现在我很无能为力。我还在EAR中扫描了jsqlparser的其他档案,但是空了。 jsqlparser-bin.jar本身就是犹太教,因为我能够用它进行编译(没有它就不能编译)。

那是什么给出的?如何使JAR中的类可见?为什么它在类加载器层次结构中没有自己的DelegatingHandler

1 个答案:

答案 0 :(得分:0)

看起来我需要在<module>中添加META-INF/application.xml块才能正确解析。