尝试使用jersey构建REST服务时,我得到了NoSuchMethodError。任何帮助将不胜感激。
我的POM.xml:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
我的web.xml:
<servlet>
<servlet-name>Rest</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.example.serversideauthservice.resources.AuthResource</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Rest</servlet-name>
<url-pattern>/auth/*</url-pattern>
</servlet-mapping>
不确定我做错了什么,但是当我检查API文档时,似乎我在mvn dependancies中有正确的版本。
这是运行时的堆栈跟踪。
[INFO] INFO: Scanning for root resource and provider classes in the packages:
[INFO] com.example.serversideauthservice.resources.AuthResource
[INFO] Feb 21, 2015 2:35:26 PM com.google.apphosting.utils.jetty.JettyLogger warn
**[INFO] WARNING: failed Rest: java.lang.NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;**
[INFO] Feb 21, 2015 2:35:26 PM com.google.apphosting.utils.jetty.JettyLogger warn
[INFO] WARNING: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@7f74a932{/,D:\taxmarkets_main\taxmarket\target\taxmarket-1.0-SNAPSHOT}: java.lang.NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;
[INFO] Feb 21, 2015 2:35:26 PM com.google.apphosting.utils.jetty.JettyLogger warn
[INFO] WARNING: failed JettyContainerService$ApiProxyHandler@660382ce: java.lang.NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;
[INFO] Feb 21, 2015 2:35:26 PM com.google.apphosting.utils.jetty.JettyLogger warn
[INFO] WARNING: Error starting handlers
[INFO] java.lang.NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;
[INFO] at com.sun.jersey.spi.scanning.AnnotationScannerListener.<init>(AnnotationScannerListener.java:94)
[INFO] at com.sun.jersey.spi.scanning.PathProviderScannerListener.<init>(PathProviderScannerListener.java:59)
[INFO] at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
[INFO] at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
[INFO] at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
[INFO] at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89)
[INFO] at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696)
[INFO] at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674)
[INFO] at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:205)
答案 0 :(得分:1)
我最近遇到了这个问题。检查名称为com.sun.jersey.core.reflection.ReflectionHelper
的类是否存在于任何其他jar中。
对我来说,我也有caliper.jar
,而是从那里加载。该类没有getContextClassLoaderPA。
执行grep -ir com.sun.jersey.core.reflection.ReflectionHelper *
以查看是否有任何其他jar显示相同的类。
答案 1 :(得分:0)
我遇到以下异常:java.lang.IllegalAccessError:尝试访问方法com.sun.jersey.core.spi.factory.ResponseImpl。&lt; init etc。
这可能表明存在内部Weblogic问题。我用更新的战争更新了相同的部署。经过一段时间后,看起来更新过程没有卸载旧的war依赖项。 我从weblogic目录中手动删除了部署的war文件。在托管服务器运行时,我无法删除两个战争:当前的战争和替换战争。 感兴趣的目录:12.1.3 \ user_projects \ domains \ wl_server \ servers \ managed_1 \ stage,12.1.3 \ user_projects \ domains \ wl_server \ servers \ managed_1 \ tmp_WL_user,12.1.3 \ user_projects \ domains \ wl_server \ servers \ AdminServer \上传。
停止托管服务器后,我可以删除旧战争,只留下最新的战争。 在managed_1开始时,最新的战争正在进行,没有奇怪的例外。