Jersey / REST – NoSuchMethodError:com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava / security / PrivilegedAction;

尝试使用jersey构建REST服务时,我得到了NoSuchMethodError。 任何帮助将非常感激。

我的POM.xml:

 com.sun.jersey jersey-core 1.19   com.sun.jersey jersey-servlet 1.19   com.sun.jersey jersey-client 1.19  

我的web.xml:

  Rest com.sun.jersey.spi.container.servlet.ServletContainer  com.sun.jersey.config.property.packages com.example.serversideauthservice.resources.AuthResource  1   Rest /auth/*  

不确定我做错了什么,但当我检查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.(AnnotationScannerListener.java:94) [INFO] at com.sun.jersey.spi.scanning.PathProviderScannerListener.(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.(PackagesResourceConfig.java:78) [INFO] at com.sun.jersey.api.core.PackagesResourceConfig.(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) 

我最近也遇到过这个问题。 检查名称为com.sun.jersey.core.reflection.ReflectionHelper类是否存在于任何其他jar中。

对我来说,我也有caliper.jar ,它从那里被装载。 那个类没有getContextClassLoaderPA。

执行grep -ir com.sun.jersey.core.reflection.ReflectionHelper *以查看是否有任何其他jar显示相同的类。

  • Bea Weblogic 12.1.3.0.0
  • jdk 1.7.0_75
  • jersey依赖1.19

我有以下exception:java.lang.IllegalAccessError:尝试访问方法com.sun.jersey.core.spi.factory.ResponseImpl。

  • 试图使用“提供”范围的jersey依赖,但它没有用。
  • 错误似乎是随机出现的,类似的包工作与否。
  • 我创建了另一个weblogic托管服务器,并部署了与初始托管服务器上无法运行的相同的战争。 错误不会出现。

这可能表明存在内部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开始时,最新的战争正在进行,没有奇怪的例外。