项目

一般

简介

jersey相关类冲突

chen zh超过 2 年 之前添加

异常提示:

java.lang.ClassCastException: class org.glassfish.jersey.uri.internal.JerseyUriBuilder cannot be cast to class org.jboss.resteasy.spi.ResteasyUriBuilder (org.glassfish.jersey.uri.internal.JerseyUriBuilder is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @8d62efb; org.jboss.resteasy.spi.ResteasyUriBuilder is in unnamed module of loader com.apusic.aas.web.loader.WebappClassLoader @420b93d2)
at org.jboss.resteasy.spi.metadata.ResourceBuilder$ResourceMethodBuilder.buildMethod(ResourceBuilder.java:715)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder.processMethod(ResourceBuilder.java:1245)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder.fromAnnotations(ResourceBuilder.java:911)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder.getRootResourceFromAnnotations(ResourceBuilder.java:878)
    at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:258)
    at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:227)
    at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:208)
    at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:192)
    at org.jboss.resteasy.plugins.spring.SpringBeanProcessor.onApplicationEvent(SpringBeanProcessor.java:531)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
    at org.springframework.context.support.AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:881)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:580)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:423)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175)
    at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155)
    at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97)
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174)
    at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5764)
    at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:609)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5660)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:526)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:885)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:868)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:644)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2069)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1690)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:83)
    at com.apusic.aas.internal.data.EngineRef.start(EngineRef.java:98)
    at com.apusic.aas.internal.data.ModuleInfo.start(ModuleInfo.java:267)
    at com.apusic.aas.internal.data.ApplicationInfo.start(ApplicationInfo.java:358)
    at com.apusic.enterprise.v10.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:479)
    at com.apusic.enterprise.v10.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:412)
    at com.apusic.enterprise.v10.server.ApplicationLoaderService$1.run(ApplicationLoaderService.java:228)
    at java.base/java.lang.Thread.run(Thread.java:829)

处理方案:在应用WEB-INF目录下添加如下内容的apusic-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<aas-web-app error-url="">
<class-loader delegate="false">
<property name="ignoreParentsFiles" value="true"></property>
<property name="ignoreResources" value="META-INF/services/javax.servlet.ServletContainerInitializer;META-INF/services/org.jboss.resteasy.spi.ResteasyUriBuilder;META-INF/services/org.glassfish.jersey.server.spi.ComponentProvider;META-INF/services/org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider"></property>
<property name="ignoreClassPrefix" value="org.glassfish.jersey"></property>
</class-loader>
</aas-web-app>

如果不行,可以换种写法:

<?xml version="1.0" encoding="UTF-8"?>
<aas-web-app error-url="">
<class-loader delegate="false">
<property name="ignoreParentsFiles" value="true"></property>
<property name="ignoreClassPrefix" value="org.glassfish.jersey"></property>
<property name="ignoreResources" value="META-INF/services/org.glassfish.jersey.server.spi.ComponentProvider;META-INF/services/org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider"></property>
</class-loader>
</aas-web-app>