欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

websphere7.0 jar包冲突解决办法,类加载顺序

程序员文章站 2022-06-16 09:41:04
...

 

本文以windows版websphere为样例

 

本文主要解决的是同一个web模块(web项目)下,有两个jar包里含有相同的包名类名的类,造成加载的类错误的问题(其他的也可以解决)

(附件中提供,查看类加载于哪的jsp)

其实解决这种问题最简单的办法就是,把想优先使用的jar包,解压成class,优先加载class。

websphere一个web模块下jar包加载的顺序,只能看,不能改,似乎可以尝试改jar名的方式调整jar包加载顺序,

websphere linux和windows版,不同补丁版本,加载的顺序可能是不同的,有的是乱序的,有的是按文件名排序的。乱序的是真够烂的。

 

一、查看类加载顺序

was控制台

企业应用程序 > jartest_war > 管理模块 > jartest.war

类装入器顺序
websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
默认的是:类已装入并且是先使用父类装入器

另一个是:类已装入并且是先使用本地类装入器(父类最后)

(server1 类装入器策略为多个时,类装入方式默认也是 类已装入并且是先使用父类装入器,是灰色的,改不了,类装入器策略为单个是,可以修改)

 

应用程序--企业应用程序 > jartest_war > 管理模块 > jartest.war > 类装入器查看器

websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
 
第二种查看方式:

故障诊断--类装入器查看器
websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
 
websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
 

类已装入并且是先使用父类装入器 时

1.jdk扩展,最先加载

可以把jar包放到这个下

D:/Program Files/IBM/WebSphere/AppServer/java/jre/lib/ext/

这样影响比较大,

我曾经放过hibernate-jpa-2.0-api-1.0.1.Final.jar到这个目录下

 

5.server1上使用共享库会影响这个

 

6.应用程序ear上使用共享库会影响这个

 

7.web模块war加载的类和jar包的顺序 web模块上使用共享库似乎没什么效果

在这可以看到jar包的加载顺序,有的版本加载的是乱序的,有的是按文件名顺序加载,顺序只能看改不了,

似乎可以通过改jar包名尝试调整顺序。

 

能用ear共享库解决的问题,就不用再server1上解决了

 

创建共享库

websphere7.0 创建共享库,引用共享库
http://happyqing.iteye.com/blog/2323338

 

WebSphere类加载问题的错误诊断
http://www.blogjava.net/jjshcc/archive/2014/05/13/413618.html

 

  • websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
  • 大小: 15.8 KB
  • websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
  • 大小: 29 KB
  • websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
  • 大小: 23.7 KB
  • websphere7.0 jar包冲突解决办法,类加载顺序
            
    
    博客分类: WebSphere webspherejar包冲突加载顺序 
  • 大小: 33.3 KB