Cannot run GAE Test when gwt-dev dependency is removed (java.lang.NoClassDefFoundError: org/mortbay/xml/XmlParser)
Cannot run GAE Test when gwt-dev dependency is removed (java.lang.NoClassDefFoundError: org/mortbay/xml/XmlParser)
我在想办法解决这个错误,有人说 httpcore
依赖性:
java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
at com.jayway.restassured.config.EncoderConfig.<init>(EncoderConfig.java:48)
at com.jayway.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)
at com.jayway.restassured.RestAssured.<clinit>(RestAssured.java:423)
然而,运行 mvn dependency:tree
给出
[INFO] +- com.jayway.restassured:rest-assured:jar:2.4.0:compile
[INFO] | +- org.codehaus.groovy:groovy:jar:2.3.7:compile
[INFO] | +- org.codehaus.groovy:groovy-xml:jar:2.3.7:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.6:compile
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.3.3:compile
更新:
显然是 GWT 依赖引起的:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${version.gwt}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</exclusion>
</exclusions>
</dependency>
我已经添加了排除项并且错误消失了,但是删除 gwt-dev
会使 GAE 测试失败并抛出此错误:
Caused by: java.lang.NoClassDefFoundError: org/mortbay/xml/XmlParser
at com.google.apphosting.utils.config.AppEngineWebXmlProcessor.getTopLevelNode(AppEngineWebXmlProcessor.java:94)
at com.google.apphosting.utils.config.AppEngineWebXmlProcessor.processXml(AppEngineWebXmlProcessor.java:55)
at com.google.apphosting.utils.config.AppEngineWebXmlReader.processXml(AppEngineWebXmlReader.java:132)
at com.google.apphosting.utils.config.AppEngineWebXmlReader.readAppEngineWebXml(AppEngineWebXmlReader.java:76)
at com.google.appengine.tools.KickStart.isVMRuntime(KickStart.java:368)
at com.google.appengine.tools.KickStart.<init>(KickStart.java:241)
at com.google.appengine.tools.KickStart.main(KickStart.java:106)
解决办法就是让GWT放心不接类:
<dependency>
<groupId>com.jayway.restassured</groupId>
<artifactId>rest-assured</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${version.gwt}</version>
<scope>test</scope>
</dependency>
有了这个命令后,测试正常。
我在想办法解决这个错误,有人说 httpcore
依赖性:
java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
at com.jayway.restassured.config.EncoderConfig.<init>(EncoderConfig.java:48)
at com.jayway.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)
at com.jayway.restassured.RestAssured.<clinit>(RestAssured.java:423)
然而,运行 mvn dependency:tree
给出
[INFO] +- com.jayway.restassured:rest-assured:jar:2.4.0:compile
[INFO] | +- org.codehaus.groovy:groovy:jar:2.3.7:compile
[INFO] | +- org.codehaus.groovy:groovy-xml:jar:2.3.7:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.6:compile
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.3.3:compile
更新:
显然是 GWT 依赖引起的:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${version.gwt}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</exclusion>
</exclusions>
</dependency>
我已经添加了排除项并且错误消失了,但是删除 gwt-dev
会使 GAE 测试失败并抛出此错误:
Caused by: java.lang.NoClassDefFoundError: org/mortbay/xml/XmlParser
at com.google.apphosting.utils.config.AppEngineWebXmlProcessor.getTopLevelNode(AppEngineWebXmlProcessor.java:94)
at com.google.apphosting.utils.config.AppEngineWebXmlProcessor.processXml(AppEngineWebXmlProcessor.java:55)
at com.google.apphosting.utils.config.AppEngineWebXmlReader.processXml(AppEngineWebXmlReader.java:132)
at com.google.apphosting.utils.config.AppEngineWebXmlReader.readAppEngineWebXml(AppEngineWebXmlReader.java:76)
at com.google.appengine.tools.KickStart.isVMRuntime(KickStart.java:368)
at com.google.appengine.tools.KickStart.<init>(KickStart.java:241)
at com.google.appengine.tools.KickStart.main(KickStart.java:106)
解决办法就是让GWT放心不接类:
<dependency>
<groupId>com.jayway.restassured</groupId>
<artifactId>rest-assured</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${version.gwt}</version>
<scope>test</scope>
</dependency>
有了这个命令后,测试正常。