java.lang.LinkageError:接口itable初始化中的加载程序约束冲突
当我执行代码时,我得到以下错误。 这是在我从JDK1.6升级到1.8之后发生的java.lang.LinkageError:接口itable初始化中的加载程序约束冲突,java,java-8,Java,Java 8,当我执行代码时,我得到以下错误。 这是在我从JDK1.6升级到1.8之后发生的 java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "javax.security.auth.kerberos.JavaxSecurityAuthKerberosAccessImpl.keyTabTakeSnapshot(Ljavax/security
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)
java.lang.LinkageError:接口itable初始化中的加载程序约束冲突:解析方法“javax.security.auth.kerberos.javaxsecurityAuthkeroberosaccessImpl.keyTabTakeSnapshot(Ljavax/security/auth/kerberos/KeyTab;)Lsun/security/krb5/internal/ktab/KeyTab;”类加载程序当前类的(org/powermock/core/classloader/MockClassLoader实例)、javax/security/auth/kerberos/javaxsecurityauthkeroberosaccessimpl和接口sun/security/krb5/javaxsecurityauthkeroberosaccess的类加载器(实例)对于签名中使用的javax/security/auth/kerberos/KeyTab类型具有不同的类对象
位于javax.security.auth.kerberos.KeyTab.(KeyTab.java:100)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:264)
位于org.apache.hadoop.security.UserGroupInformation。(UserGroupInformation.java:609)
Java 8在允许的字节码方面更为严格。一些模拟工具使用了一些不寻常的字节码工具
最有可能的修复方法是升级您的powermock,因为它很可能已修复为与Java 8一起使用。使用annotation@PowerMockIgnore(“javax.security.*”)在测试用例中解决了我的测试用例的失败。我使用的是powermock-api-mockito的最新版本1.6.2。那么也许可以检查他们的错误跟踪程序?这对我来说是一个很好的答案!这是一个很好的答案。立即为我解决了问题。您可能会接受自己正确的答案。