字节码不兼容 - java.lang.IncompatibleClassChangeError:实现类

时间:2014-11-18 20:41:53

标签: java runtime-error

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现在变为{ {1}}以前是Class

甚至可以在定义Interface的过程中加载ClassX所依赖的任何其他类(我希望不是!),因为这应该可以帮助我查明错误,但不会#39; t似乎?

或者是否有可能这也可能是由于错误导致的各种其他原因造成的,它只是表现为ClassX(我希望不会再次出现)?

1 个答案:

答案 0 :(得分:1)

我能够发现错误正是它所说的!

事实上,另一种类型的包装结构被加载(与正在使用的库的不同版本相反),但它只是罪魁祸首类型是Class as与Interface的预期类型相反!