Java WebSphere如何选择文件夹(WEB-INF/lib)中的类加载顺序

Java WebSphere如何选择文件夹(WEB-INF/lib)中的类加载顺序,java,class,websphere,classloader,Java,Class,Websphere,Classloader,我目前面临一个有趣的问题,由于类加载问题,我们的应用程序无法在3/4节点上启动 问题似乎是在a.jar之前加载b.jar。在排除更多故障后,我发现所有节点都以不同的顺序加载jar(通过控制台中的Classpath查看器),而工作节点可能只是侥幸 WebSphere如何确定已安装应用程序WEB-INF/lib文件夹中的类加载顺序 websphere中未定义JAR的加载顺序。为了解决您的问题,我建议您使用以下选项之一 使用清单类路径设置,按照您希望如何加载的顺序提及jar名称 或 您可以从.jar中

我目前面临一个有趣的问题,由于类加载问题,我们的应用程序无法在3/4节点上启动

问题似乎是在a.jar之前加载b.jar。在排除更多故障后,我发现所有节点都以不同的顺序加载jar(通过控制台中的Classpath查看器),而工作节点可能只是侥幸


WebSphere如何确定已安装应用程序WEB-INF/lib文件夹中的类加载顺序

websphere中未定义JAR的加载顺序。为了解决您的问题,我建议您使用以下选项之一

使用清单类路径设置,按照您希望如何加载的顺序提及jar名称


您可以从.jar中提取类并将其放入
WEB-INF/classes
目录中。然后从lib文件夹中删除a.jar。因为
classes
目录将在
lib
目录之前加载。

有两种方法可以在Websphere中配置类加载器,第一种(默认)是父类加载器,第二种是父类加载器。Websphere中的类加载器是分层的,您可以将其视为一棵树,其中包含: Java类加载器->ext类加载器->应用程序模块类加载器->web模块类加载器

PARENT_首先从“自顶向下”加载类,从Java类加载器开始,而PARENT_最后从“自下而上”加载类,从web模块类加载器开始。如果您使用的开源库与WAS附带的库冲突,我建议您最后使用PARENT_

有关更多信息,请查看这些资源:


在启动过程中,您是否发现类未找到异常?不完全。。我得到了另一个错误,当与开发人员讨论时,他说这是因为它加载了一个特定的jar命令。他们打算在jarname.jar之前加载一个0-jarname.jar,但是在3/4节点上,它在0-jarname.jar之前加载jarname.jar。我试图理解它是如何加载顺序的,因为在websphere classpath viewer中,它似乎没有任何有意义的顺序。有什么原因导致0-jarname.jar和jarname.jar不能简单地组合到一个jar中?您声明“应用程序无法启动”您能发布错误吗?为什么先加载b.jar还是a.jar会有区别呢?谢谢。我将很快尝试第一个选项,如果需要,我可能会请开发人员帮助选择2。好的。祝你好运:)实际上是一个问题。。设置清单文件中的类路径时。。如果我想查看installedApps/[appname]/WEB-INF/lib/jarname.jar,相对路径是什么?WEB-INF/lib/jarname.jar是否足够?通常我们会引用像
global\a.jar
这样的目录,
global
是ear中可用的目录,但在war中不可用。我不确定是否在
WEB-INF\lib
中引用jar。不可能使用类路径来控制WEB-INF/lib的顺序(因此这有点不可选择)。感谢您的反馈,但不是我想要的。我最后使用的是parent,因为我首先需要web模块类,但是在web模块web-INF/lib文件夹中,我想知道类是如何加载到该文件夹中的(该文件夹似乎没有文档记录)。