当Jboss EAP 6.2.3
加载我的应用程序类之一时,出现此错误。
虽然我确实了解此错误表示什么的背景,但不确定我是否正确解释了"Implementing class"
部分。调试EAP
代码后,我能够找到在本机define
调用期间失败的类。假设类名称为ClassX
。
[org.jboss.modules] (muxRequestListener-10) Failed to define class com.company.ClassX
in Module "deployment.earDeployment.myApp.war:main" from Service Module Loader: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.6.0_35]
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) [rt.jar:1.6.0_35]
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) [rt.jar:1.6.0_35]
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361) [jboss-modules.jar:1.3.3.Final-redhat-1]
它是否仅表示类:
ClassX
认为它正在实现接口InterfaceY
,但是由于最近的二进制更改,InterfaceY
现在已成为Class
之前的Interface
?它甚至可能是由于在定义
ClassX
的过程中加载ClassX
所依赖的任何其他类(我希望不是!)引起的,因为这确实可以帮助我查明错误,但似乎没有?还是有可能这也可能是由于其他各种原因导致的错误,并且它只是将自身显示为
"Implementing class"
(我希望不会再出现)了吗? 最佳答案
我能够发现该错误确切说明了它的意思!
实际上,这是另一种加载了相同包结构的类型(与使用的库的不同版本相反),但是,罪魁祸首类型是Class
,而预期类型是Interface
cc>!