java.lang.LinkageError:接口itable初始化中的加载器约束违规

时间:2015-09-18 20:51:53

标签: java java-8

当我执行我的代码时,我收到以下错误。 这是在我从JDK 1.6升级到1.8

之后发生的
java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "javax.security.auth.kerberos.JavaxSecurityAuthKerberosAccessImpl.keyTabTakeSnapshot(Ljavax/security/auth/kerberos/KeyTab;)Lsun/security/krb5/internal/ktab/KeyTab;" the class loader (instance of org/powermock/core/classloader/MockClassLoader) of the current class, javax/security/auth/kerberos/JavaxSecurityAuthKerberosAccessImpl, and the class loader (instance of <bootloader>) for interface sun/security/krb5/JavaxSecurityAuthKerberosAccess have different Class objects for the type javax/security/auth/kerberos/KeyTab used in the signature
    at javax.security.auth.kerberos.KeyTab.<clinit>(KeyTab.java:100)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.hadoop.security.UserGroupInformation.<clinit>(UserGroupInformation.java:609)

2 个答案:

答案 0 :(得分:4)

在测试用例中使用注释@PowerMockIgnore(&#34; javax.security。*&#34;)解决了我的测试用例的失败。

答案 1 :(得分:3)

Java 8在允许的字节代码方面更为严格。一些模拟工具使用了一些不寻常的字节码检测。

最有可能的解决方法是升级你的powermock,因为它很可能已被修复以使用Java 8。

相关问题