jetty-LinkageError:org/eclipse/jetty/util/security/Credential的加载程序约束冲突

jetty-LinkageError:org/eclipse/jetty/util/security/Credential的加载程序约束冲突,jetty,classloader,jetty-9,Jetty,Classloader,Jetty 9,我已经使用jetty JASS登录服务实现了自己的登录模块。创建我自己的登录模块,在jetty服务器上部署我的WAR文件。我已经扩展了jettyAbstractLoginModule,以实现或使用jetty jass登录服务。一旦扩展了它,您需要做的就是实现它的getUserInfo方法 我也是这样做的 @Override public UserInfo getUserInfo(String username) throws Exception { Credentia

我已经使用jetty JASS登录服务实现了自己的登录模块。创建我自己的登录模块,在jetty服务器上部署我的WAR文件。我已经扩展了jettyAbstractLoginModule,以实现或使用jetty jass登录服务。一旦扩展了它,您需要做的就是实现它的getUserInfo方法

我也是这样做的

  @Override
    public UserInfo getUserInfo(String username) throws Exception {
        Credential credential = Credential.getCredential(username);
        List<String> roles = new ArrayList<String>();
        roles.add("**");        
        return new UserInfo(username, credential, roles);

    }
@覆盖
public UserInfo getUserInfo(字符串用户名)引发异常{
凭证=凭证.getCredential(用户名);
列表角色=新的ArrayList();
角色。添加(“**”);
返回新的UserInfo(用户名、凭证、角色);
}
当jetty未部署或未使用任何https模块时,它工作正常,但当我使用https模块时,它抛出链接错误,不允许我使用https或https进行连接。我的身份验证失败

错误

    2015-12-23 12:34:00.053:WARN:oejj.JAASLoginService:qtp109961541-14:
javax.security.auth.login.LoginException: java.lang.LinkageError: loader constraint violation: when resolving method "org.eclipse.jetty.jaas.spi.UserInfo.<init>(Ljav
a/lang/String;Lorg/eclipse/jetty/util/security/Credential;Ljava/util/List;)V" the class loader (instance of org/eclipse/jetty/webapp/WebAppClassLoader) of the curren
t class, sigma/git/ctr/loginmodule/SigmaAALoginModule, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the method's defining class, org/eclip
se/jetty/jaas/spi/UserInfo, have different Class objects for the type org/eclipse/jetty/util/security/Credential used in the signature<|?at sigma.git.ctr.loginmodule
.SigmaAALoginModule.getUserInfo(SigmaAALoginModule.java:192)<|?at sigma.git.ctr.loginmodule.SigmaAALoginModule.login(SigmaAALoginModule.java:146)<|?at sun.reflect.Na
tiveMethodAccessorImpl.invoke0(Native Method)<|?at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<|?at sun.reflect.DelegatingMethodAccessorImpl.invoke(U
nknown Source)<|?at java.lang.reflect.Method.invoke(Unknown Source)<|?at javax.security.auth.login.LoginContext.invoke(Unknown Source)<|?at javax.security.auth.login
.LoginContext.access$000(Unknown Source)<|?at javax.security.auth.login.LoginContext$4.run(Unknown Source)<|?at javax.security.auth.login.LoginContext$4.run(Unknown
Source)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)<|?at javax.security.au
th.login.LoginContext.login(Unknown Source)<|?at org.eclipse.jetty.jaas.JAASLoginService.login(JAASLoginService.java:233)<|?at org.eclipse.jetty.security.authenticat
ion.LoginAuthenticator.login(LoginAuthenticator.java:61)<|?at org.eclipse.jetty.security.authentication.BasicAuthenticator.validateRequest(BasicAuthenticator.java:92
2015-12-23 12:34:00.053:警告:oejj.JAASLoginService:qtp109961541-14:
javax.security.auth.login.login异常:java.lang.LinkageError:加载程序约束冲突:解析方法“org.eclipse.jetty.jaas.spi.UserInfo.(Ljav)
a/lang/String;Lorg/eclipse/jetty/util/security/Credential;Ljava/util/List;)V“curren的类加载器(org/eclipse/jetty/webapp/WebAppClassLoader的实例
t类、sigma/git/ctr/loginmodule/sigmaaloginmodule和方法定义类org/eclip的类加载器(sun/misc/Launcher$AppClassLoader的实例)

se/jetty/jaas/spi/UserInfo,对于签名中使用的org/eclipse/jetty/util/security/Credential类型有不同的类对象。如果我移除jetty-util jar并设置“Credential-Credential=null”,那么我只需通过APSS凭证,一切都可以正常工作。但这只是权宜之计,而不是确切的解决方案。在我的例子中,userInfo对象没有任何意义,所以我忽略了将其视为虚拟对象。裁判