Java Weblogic应用程序类从同一webapp中的其他jar加载实用程序jar类

Java Weblogic应用程序类从同一webapp中的其他jar加载实用程序jar类,java,web-applications,weblogic,classpath,Java,Web Applications,Weblogic,Classpath,我在Weblogic中的应用程序中遇到了一些类加载问题。在我的代码中,有些地方存在依赖于其他JAR类的类,我肯定遗漏了一些基本的东西 通过查看我可以找到的信息,如果两个JAR都在类路径上,这应该不是问题,但在Weblogic上的JavaEE应用程序上下文中,这似乎更微妙 我有一只耳朵,我的耳朵 ear包含几个webapps war和一大堆实用程序jar和ejb。结构是这样的,我无法控制它 MyApp.ear MyWebApp.war UtilJar1.jar Uti

我在Weblogic中的应用程序中遇到了一些类加载问题。在我的代码中,有些地方存在依赖于其他JAR类的类,我肯定遗漏了一些基本的东西

通过查看我可以找到的信息,如果两个JAR都在类路径上,这应该不是问题,但在Weblogic上的JavaEE应用程序上下文中,这似乎更微妙

我有一只耳朵,我的耳朵

ear包含几个webapps war和一大堆实用程序jar和ejb。结构是这样的,我无法控制它

MyApp.ear
     MyWebApp.war
     UtilJar1.jar
     UtilJar2.jar
     etc...
假设UtilJar1中有一些类从UtilJar2导入类。哪个MANIFEST.MF应该指定两个JAR都应该在类路径上?耳朵坏了?网络应用程序的?UtilJar1的


从试错Weblogic 10.3.2来看,唯一可行的方法是在UtilJar1的清单类路径中定义UtilJar2。但我会认为,在一个webapp的上下文中,webapp的类路径将用于该webapp中发生的任何类加载?相反,我看到NoClassDefFound,除非在第一个jar的类路径中指定了第二个jar。

下面是oracle文档的摘录:

J2EE规范提供了manifest类路径条目,作为模块指定它需要类的辅助JAR的一种方法

只有在EJBJAR或WAR文件中包含其他支持JAR文件时,才需要使用此清单类路径条目

请浏览以下文档中的清单类路径部分-

J2ee部署存档[EAR]是不同模块的集合,每个模块在各自的清单文件中声明有依赖关系

据我所知,EAR中的每个模块[war、ejb、jar]都有自己的类装入器,它们是EAR类装入器的子类。子类加载器将只对其父类可见,并且不知道兄弟类加载器,除非您在清单文件中声明依赖项


即使在战争清单中有一个条目,utilit1.jar也不知道utility2.jar,您必须明确提到Utility1.jar清单文件中的依赖项。

谢谢您的回复,我已经阅读了该文档,对此我并不清楚。我的JAR显式地和我的WAR隐式地需要类路径上的这两个辅助JAR。我不清楚,如果您有一个WAR清单,为什么还需要在jar清单中明确提到另一个jar。如果这些实用程序jar位于WAR文件的/WEB-INF/lib文件夹中,那么就不需要将它们添加到类路径中。Web容器将这些jar添加到类路径中。如果jar在war文件之外,特别是EJB,则明确要求在清单中提及jar名称。感谢您的评论,正如我在问题中所述,jar在war之外,它们都在EAR之内。我已经在WAR MANIFEST.MF中声明了它们,问题是在该上下文中,尽管WAR的MANIFEST类路径条目存在,但两个实用程序jar之间的类加载仍然存在。在这一点上,EJB没有被涉及,我已经用我认为最能回答这个问题的细节更新了帖子。如果我错了,请纠正我。谢谢!我想我从官方文档中漏掉的是,实用程序jar不仅仅是ejb模块,还有类加载器,它们是ear的孩子,是war的类加载器的兄弟。war类加载器似乎有点无用,除了JSP的特殊情况?