java.util.concurrent.ExecutionException:java.lang.LinkageError:加载器约束违规:解析方法时

时间:2017-03-24 16:44:20

标签: constraints loader websphere-liberty

类文件DTDScanner,DocumentScanner从两个jar文件com.ibm.ws.webservices.thinclient_8.5.0.jar(由应用程序通过WEB-INF / lib提供)和com.ibm.ws.xlxp.1.5加载。由Liberty profile liberty提供的3_1.0.16.jar。这些类文件有java.lang.LinkageError:loader约束违规,因为它由两个不同的类加载器加载。

Liberty Version:17.0.0.1 Liberty - (17.0.0.1-cl170120170227-0220)

这是错误 java.util.concurrent.ExecutionException:java.lang.LinkageError:loader constraint violation:解析方法" com.ibm.xml.xlxp2.scan.util.EntityManager。< init>(Lcom / ibm / xml / xlxp2 /扫描/ UTIL / EntityManager的$ EntitySupport; LCOM / IBM / XML / xlxp2 /扫描/ DocumentScanner; LCOM / IBM / XML / xlxp2 /扫描/ UTIL /符号表; LCOM / IBM / XML / xlxp2 /扫描/ UTIL / ParsedEntityFactory; )V"当前类的类加载器(com / ibm / ws / classloading / internal / AppClassLoader的实例),com / ibm / xml / xlxp2 / scan / DTDScanner和类加载器(org / eclipse / osgi / internal /的实例) loader / EquinoxClassLoader)用于方法定义类com / ibm / xml / xlxp2 / scan / util / EntityManager,对于签名中使用的com / ibm / xml / xlxp2 / scan / DocumentScanner类型具有不同的Class对象

[4:54]
如果需要,如何在单个类加载器中加载所有jar文件?

1 个答案:

答案 0 :(得分:1)

瘦客户机jar不是为打包在Java EE应用程序中而设计的 - 它们的目的是(顾名思义)独立的瘦客户机,提供一些用于这些环境的WebSphere API。包含它们会在服务器和应用程序之间产生大量的类重复,而LinkageErrors是这种重复的常见副作用。从您的应用程序中删除该jar(它不应包含服务器本身不包含的任何内容)应解决此问题。