【问题标题】:Jersey/REST--NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;Jersey/REST--NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;
【发布时间】:2015-02-21 22:52:55
【问题描述】:

我在尝试使用 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 依赖项中有正确的版本。

这是运行时的堆栈跟踪。

[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)

【问题讨论】:

标签: java rest maven jersey


【解决方案1】:

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

对我来说,我也有 caliper.jar,它是从那里加载的。该类没有 getContextClassLoaderPA。

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

【讨论】:

  • 这怎么不能回答这个问题,也许我可以明确地说删除其他可能包含相同类的罐子会解决问题?
  • grep -ir ReflectionHelper* 将为您提供具有相同类 ReflectionHelper 的 jar 列表
【解决方案2】:
  • Bea Weblogic 12.1.3.0.0
  • jdk 1.7.0_75
  • 球衣依赖 1.19

我遇到了以下异常:java.lang.IllegalAccessError: 试图访问方法 com.sun.jersey.core.spi.factory.ResponseImpl.

  • 尝试对球衣依赖项使用“提供”范围,但没有成功。
  • 错误似乎是随机出现的,类似的包是否正常工作。
  • 我创建了另一个 weblogic 托管服务器并部署了在初始托管服务器上不起作用的相同战争。错误未出现。

这可能表明存在内部 Weblogic 问题。我正在用更新的战争更新相同的部署。一段时间后,更新过程似乎没有卸载旧的战争依赖项。 我从 weblogic 目录中手动删除了部署的战争文件。我无法删除两场战争:当前一场和被替换的一场,而托管服务器正在运行。 感兴趣的目录: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 开始时,最新的战争正在运行,没有奇怪的例外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多