Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.LinkageError:接口itable初始化中的加载程序约束冲突_Java_Java 8 - Fatal编程技术网

java.lang.LinkageError:接口itable初始化中的加载程序约束冲突

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

当我执行代码时,我得到以下错误。 这是在我从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/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。那么也许可以检查他们的错误跟踪程序?这对我来说是一个很好的答案!这是一个很好的答案。立即为我解决了问题。您可能会接受自己正确的答案。