在 ubuntu tomcat 上找不到类 com.sun.ws.rs.ext.RuntimeDelegateImpl

Posted

技术标签:

【中文标题】在 ubuntu tomcat 上找不到类 com.sun.ws.rs.ext.RuntimeDelegateImpl【英文标题】:Class not found com.sun.ws.rs.ext.RuntimeDelegateImpl on ubuntu tomcat 【发布时间】:2021-11-04 01:24:55 【问题描述】:

我正在使用 GWT/P 构建一个 webapp,它使用 javax.ws.rs.client 与其他服务进行通信。

使用泽西客户端:

<jersey.version>2.22.2</jersey.version>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>$jersey.version</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>
</dependency>

它部署在 tomcat 上(7 和 9 版本,都按预期工作)。但是,在一个 ubuntu 服务器上,使用 tomcat 9 我得到以下异常:

Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl
    at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:122)
    at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91)
    at javax.ws.rs.core.UriBuilder.newInstance(UriBuilder.java:69)
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:80)
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:99)
    at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:71)
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:290)
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:76)

我不知道它为什么要寻找 com.sun.ws.rs.ext.RuntimeDelegateImpl 而不是 org.glassfish.jersey.internal.RuntimeDelegateImpl,而且它只发生在特定的服务器上(windows、amazon AWS linux、docker linux 工作正常)。

我已尝试将球衣版本增加到 2.27(不能再增加,因为新版本与 GWT 码头 9.2.14 冲突)。

我尝试添加META-INF/services/javax.ws.rs.ext.RuntimeDelegate,第一行为org.glassfish.jersey.internal.RuntimeDelegateImpl

似乎没有任何效果。我在这里想念什么?有什么想法吗?

【问题讨论】:

【参考方案1】:

gwt-rest-dispatch 包含导致问题的 jsr311-api.jar。 删除这个依赖(因为我的项目没有使用它)解决了这个问题。

【讨论】:

以上是关于在 ubuntu tomcat 上找不到类 com.sun.ws.rs.ext.RuntimeDelegateImpl的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 上找不到 Tkinter 模块

在 Ubuntu 20.04 上找不到 JRE

在 java.library.path 上找不到基于 APR 的 Apache Tomcat 本机库

在 Laravel - 使用 ubuntu 16.04 在 xampp 上找不到驱动程序

Android ClassNotFoundException:在路径上找不到类:Dexpathlist

我在 Windows 10 上找不到 /rootfs