Tomcat的8 java.lang.LinkageError的:装载机约束冲突

问题描述:

我部署Web服务(使用METRO 2.0库,包括它在war文件)中tomcatsecurity manager启用Tomcat的8 java.lang.LinkageError的:装载机约束冲突

-Djava.security.manager 
-Djava.security.policy=C:\apache-tomcat-8.5.6\conf\catalina.policy 

,我得到以下例外

SEVERE [localhost-startStop-1] 
com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized 
    WSSERVLET11: failed to parse runtime descriptor: java.lang.LinkageError: loader 
    constraint violation: loader (instance of 
    org/apache/catalina/loader/ParallelWebappClassLoader) previously initiated loading for a 
    different type with name "javax/xml/bind/annotation/XmlNsForm" 
    java.lang.LinkageError: loader constraint violation: loader (instance of 
    org/apache/catalina/loader/ParallelWebappClassLoader) previously initiated loading for a 
    different type with name "javax/xml/bind/annotation/XmlNsForm" 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal 
    (WebappClassLoaderBase.java:2268) 
     at org.apache.catalina.loader.WebappClassLoaderBase 
    $PrivilegedFindClassByName.run(WebappClassLoaderBase.java:155) 
     at org.apache.catalina.loader.WebappClassLoaderBase 
    $PrivilegedFindClassByName.run(WebappClassLoaderBase.java:144) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.apache.catalina.loader.WebappClassLoaderBase.findClass 
    (WebappClassLoaderBase.java:809) 
     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass 
    (WebappClassLoaderBase.java:1254) 
     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass 
    (WebappClassLoaderBase.java:1119) 
     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl$1.<clinit> 
    (PropertyInfoImpl.java:365) 
     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.calcXmlName 
    (PropertyInfoImpl.java:365) 
     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.calcXmlName 
    (PropertyInfoImpl.java:340) 
     at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes 
    (ElementPropertyInfoImpl.java:136) 
     at com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes 
    (RuntimeElementPropertyInfoImpl.java:86) 
     at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size 
    (ElementPropertyInfoImpl.java:78) 
     at java.util.AbstractList$Itr.hasNext(AbstractList.java:351) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo 
    (ModelBuilder.java:255) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:100) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:81) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo 
    (ModelBuilder.java:209) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:95) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:81) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo 
    (ModelBuilder.java:315) 
     at com.sun.xml.bind.v2.model.impl.TypeRefImpl.calcRef(TypeRefImpl.java:92) 
     at com.sun.xml.bind.v2.model.impl.TypeRefImpl.getTarget(TypeRefImpl.java:69) 
     at com.sun.xml.bind.v2.model.impl.RuntimeTypeRefImpl.getTarget 
    (RuntimeTypeRefImpl.java:58) 
     at com.sun.xml.bind.v2.model.impl.RuntimeTypeRefImpl.getTarget 
    (RuntimeTypeRefImpl.java:51) 
     at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.get 
    (ElementPropertyInfoImpl.java:74) 
     at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.get 
    (ElementPropertyInfoImpl.java:77) 
     at java.util.AbstractList$Itr.next(AbstractList.java:358) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo 
    (ModelBuilder.java:255) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:100) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:81) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo 
    (ModelBuilder.java:209) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:95) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo 
    (RuntimeModelBuilder.java:81) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo 
    (ModelBuilder.java:315) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo 
    (ModelBuilder.java:330) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet 
    (JAXBContextImpl.java:466) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build 
    (JAXBContextImpl.java:1140) 
     at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154) 
     at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:106) 
     at com.sun.xml.ws.developer.JAXBContextFactory$1.createJAXBContext 
    (JAXBContextFactory.java:109) 
     at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run 
    (AbstractSEIModelImpl.java:161) 
     at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run 
    (AbstractSEIModelImpl.java:154) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext 
    (AbstractSEIModelImpl.java:153) 
     at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess 
    (AbstractSEIModelImpl.java:94) 
     at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel 
    (RuntimeModeler.java:258) 
     at com.sun.xml.ws.server.EndpointFactory.createSEIModel 
    (EndpointFactory.java:338) 
     at com.sun.xml.ws.server.EndpointFactory.createEndpoint 
    (EndpointFactory.java:201) 
     at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:505) 
     at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters 
    (DeploymentDescriptorParser.java:253) 
     at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse 
    (DeploymentDescriptorParser.java:147) 
     at 
com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized 
    (WSServletContextListener.java:124) 
     at org.apache.catalina.core.StandardContext.listenerStart 
    (StandardContext.java:4727) 
     at org.apache.catalina.core.StandardContext.startInternal 
    (StandardContext.java:5189) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal 
    (ContainerBase.java:724) 
     at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:129) 
     at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run 
    (ContainerBase.java:150) 
     at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run 
    (ContainerBase.java:140) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 
     at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:596) 
     at org.apache.catalina.startup.HostConfig$DeployDescriptor.run 
    (HostConfig.java:1805) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker 
    (ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
    (ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 

另一方面,没有security manager - 一切都部署良好。

经过一番搜索,我发现问题是在tomcat库和METRO 2.0中都找到了javax/xml/bind/annotation/XmlNsForm

所以我有2个问题:

1.Is有某种在catalina.policy属性,可以设置为避免这个问题。

2.是否有其他方法可以解决此冲突,而无需从war中删除Metro 2.0

在此先感谢。

所以将溶液不使用的Metro 2.0束整体 - 仅一些束的库(添加作为内部netbeansjars不是作为整个束)