Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoClassDefFoundError:org/glassfish/jersey/internal/inject/Binder启动Tomcat服务器时_Java_Rest_Tomcat_Jersey_Glassfish - Fatal编程技术网

java.lang.NoClassDefFoundError:org/glassfish/jersey/internal/inject/Binder启动Tomcat服务器时

java.lang.NoClassDefFoundError:org/glassfish/jersey/internal/inject/Binder启动Tomcat服务器时,java,rest,tomcat,jersey,glassfish,Java,Rest,Tomcat,Jersey,Glassfish,我正在用Jersey和Maven用Java构建RESTAPI。我使用Tomcat9作为我的服务器。在我今天尝试安装重启、Hamcrest、和JUnit之前,一切正常。突然,我所有的端点都抛出了500个内部服务器错误。500错误的根本原因是java.lang.NoClassDefFoundError:org/glassfish/jersey/internal/inject/Binder。 这两个小时我做了什么: 我试着在谷歌上找到这个类:org/glassfish/jersey/internal

我正在用Jersey和Maven用Java构建RESTAPI。我使用Tomcat9作为我的服务器。在我今天尝试安装重启、Hamcrest、JUnit之前,一切正常。突然,我所有的端点都抛出了500个内部服务器错误。500错误的根本原因是java.lang.NoClassDefFoundError:org/glassfish/jersey/internal/inject/Binder。

这两个小时我做了什么:

  • 我试着在谷歌上找到这个类:
    org/glassfish/jersey/internal/inject/Binder
    ,但没有用
  • 我已尝试卸载重新启动HamcrestJUnit,但没有任何帮助
这个问题让我很沮丧。知道为什么会发生这种错误吗?提前谢谢

以下是服务器日志的摘录:

严重:为servlet Jersey Web应用程序java.lang.ClassNotFoundException:org.glassfish.Jersey.internal.inject.Binder分配异常 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109) 位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178) 位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370) 位于javax.servlet.GenericServlet.init(GenericServlet.java:158) 位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 位于org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:779) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 位于org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) 位于org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498) 位于org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 位于org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796) 位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1368) 位于org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) 位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 位于java.lang.Thread.run(未知源)

下面是我的
pom.xml
文件:(带有restasured、Hamcrest和JUnit)


org.glassfish.jersey.containers

核心
Jersey
和导入该
活页夹类的
Jersey
扩展库之一之间很可能存在版本不匹配。确保所有与Jersey相关的模块都有明确的版本(并且它们彼此匹配)。或者更好,通过导入jersey bom表来修复您的版本。例如:

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

org.glassfish.jersey
针织面料
2.26-b03
聚甲醛
进口

之后,您的主
部分可能会忽略版本。

我在使用不同版本时遇到了相同的问题。确保Jersey bean验证和Jersey容器servlet版本相同

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22</version>
</dependency>
<!-- bean validation -->
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-bean-validation</artifactId>
    <version>2.22</version>
</dependency>

org.glassfish.jersey.containers
jersey容器servlet
2.22
org.glassfish.jersey.ext
泽西豆验证
2.22

你也有同样的问题。保持
jersey bean验证
jersey容器servlet
相同的版本很好。

谢谢。但是我通过重新启动Eclipse解决了这个问题。如果您有任何额外的jersey模块,请确保它们在pom中没有显式版本。让他们回退到依赖关系管理中的版本。如果我没有弄错,那么jersey bom包含所有重置相关的JAR。对吗?
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>2.26-b03</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22</version>
</dependency>
<!-- bean validation -->
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-bean-validation</artifactId>
    <version>2.22</version>
</dependency>