java.lang.UncompatibleClassChangeError与嵌入式Jetty和Jersey(无GAE)

java.lang.UncompatibleClassChangeError与嵌入式Jetty和Jersey(无GAE),java,spring,jersey,jetty,Java,Spring,Jersey,Jetty,我正在创建一个基于Jersey+Spring+Hibernate的RESTAPI。 部署时,一切都很好 我试图添加一些使用RestAssured的集成测试,我希望从嵌入式Jetty(强制性规范)开始,但它总是会出现此错误(详细的stacktrace见下文): 正如错误所说,这可能与我的SpringServlet有关,但是我似乎无法解决这个问题 我的Pom: 4.0.0 com.testing.system 测试核心 战争 1.0-快照 测试核心 UTF-8 朱尼特 朱尼特 4.8.2 测试 泽

我正在创建一个基于Jersey+Spring+Hibernate的RESTAPI。 部署时,一切都很好

我试图添加一些使用RestAssured的集成测试,我希望从嵌入式Jetty(强制性规范)开始,但它总是会出现此错误(详细的stacktrace见下文):

正如错误所说,这可能与我的SpringServlet有关,但是我似乎无法解决这个问题

我的Pom:


4.0.0
com.testing.system
测试核心
战争
1.0-快照
测试核心
UTF-8
朱尼特
朱尼特
4.8.2
测试
泽西岛
泽西服务器
1.17.1
asm
asm
泽西岛
泽西json
1.17.1
泽西岛
泽西servlet
1.17.1
com.sun.jersey.contribs
泽西之春
1.17.1
org.springframework
春天
org.springframework
弹簧芯
org.springframework
弹簧网
org.springframework
春豆
org.springframework
spring上下文
org.springframework
春季aop
org.springframework
春季asm
org.springframework
弹簧芯
3.2.0.1发布
org.springframework
春季aop
3.2.0.1发布
org.springframework
弹簧网
3.2.0.1发布
org.springframework
spring上下文
3.2.0.1发布
org.springframework
春季甲虫
3.2.0.1发布
org.springframework
org.springframework.test
3.2.0.1发布
测试
org.springframework.security
spring安全内核
3.1.3.1发布
org.springframework.security
spring安全网
3.1.3.1发布
org.springframework.security
spring安全配置
3.1.3.1发布
org.springframework.security.oauth
春季安全oauth
1.0.0.M4
org.hibernate
休眠实体管理器
4.2.0.4最终版本
mysql
mysql连接器java
5.1.9
com.h2数据库
氢
1.0.60
com.jolbox
博内克
0.7.1.1发布
org.apache.tomcat.embed
tomcat嵌入式内核
7.0.37
测试
org.apache.tomcat
卡塔琳娜雄猫
7.0.37
测试
org.apache.tomcat
雄猫贾斯珀
7.0.37
测试
org.mortbay.jetty
码头
6.1.26
com.jayway.restassed
放心
1.8.0
测试
p6spy
p6spy
1.3
org.slf4j
slf4j-log4j12
1.5.10
org.mockito
莫基托所有
1.9.5
测试
org.apache.commons
公地io
1.3.2
org.apache.commons
commons-lang3
3.1
asm
asm
3.3.1
org.apache.httpcomponents
httpclient
4.2.3
编译
org.springframework.social
春季社会核心
1.0.2.1发布
org.springframework.social
春季社交facebook
1.0.2.1发布
测试核心
src/main/resources
真的
src/测试/资源
真的
org.apache.maven.plugins
maven编译器插件
3
1.7
1.7
地方的
真的
系统_本地属性
数据库_local.properties
发展
系统开发属性
数据库开发属性

这是我的web.xml:


上下文配置位置
类路径:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
泽西servlet
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages
com.testing.core.resources;com.testing.core.exceptions
com.sun.jersey.spi.container.ResourceFilters
com.testing.core.filters.SecureFilterFactory
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/休息/*
泽西servlet
/休息/*

最后是启动jetty服务器的类(在JUnit测试中扩展的WithJetty类)的方法:

@BeforeClass
public static void startJetty() throws Exception {
    server = new Server(8070);

    WebAppContext context = new WebAppContext();
    context.setDescriptor("src/main/webapp/WEB-INF/web.xml");
    context.setWar("src/main/webapp");
    context.setParentLoaderPriority(true);
    context.setContextPath("/testing-core");

    server.setHandler(context);
    server.setStopAtShutdown(true);
    server.start();
}
实际测试用例非常基本:

public class UserResourceTest extends WithJetty {
    @Test
    public void test() throws Exception {
        Assert.assertEquals(200, given().log().all().get(RSConstants.PATH_UNSECURED + "/test").getStatusCode());
    }
}
更完整的堆栈跟踪

java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89)
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696)
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at testutils.WithJetty.startJetty(WithJetty.java:52)
java.lang.CompatibleClassChangeError:实现类
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:791)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
在java.net.URLClassLoader.access$100(URLClassLoader.java:71)
在
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89)
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696)
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at testutils.WithJetty.startJetty(WithJetty.java:52)