Jersey error java.lang.ClassNotFoundException: com.sun.jerse



My Node.JS API(localhost)调用Jersey 在Tomcat服务器上的API以前运行得很好,但我不知道为什么今天它意外失败了。我已经检查了自上周以来所有文件都没有修改。有一次我试图得到 http://localhost:8080/graybox/rest/analytic

它将失败并在 eclipse 控制台中显示这些消息。

SEVERE: Allocate exception for servlet [Jersey Web Application]
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:544)
...

我已经调查了很多,但我仍然找不到解决问题的方法。以下是我之前尝试解决此问题的方法,它还附加了开发环境,Web.xml和pom.xml。谢谢。

安装 maven (brew), m2eclipse (Eclipse install new software), m2e-wtp (Eclipse
  1. install new software) Eclipse 安装新软件: 帮助 -> 安装新软件 -> 将 url 复制粘贴到"使用" -> 全选和下一步并完成 m2eclipsem2e-wtp
  2. Eclipse:导入 -> 现有 Maven 项目 -> 选择"灰盒"项目文件夹
  3. 在 Eclipse 中重建 Maven 全局索引:详细信息
  4. 在Maven中添加依赖项以确保所有球衣依赖都在同一版本中,例如所有1.19版本的球衣服务器,球衣捆绑,球衣核心,泽西-json原因
  5. 清理 Maven 依赖项 项目 -> 清洁
    1. -> 清洁
    2. 右键单击项目 ->
    3. Maven -> 更新项目
    4. 右键单击项目 -> 运行方式 -> 4(或 5)Maven 构建 -> 目标:全新安装 -> 应用 -> 运行详细信息
  6. 如果有多个 Tomcat 服务器
  7. 正在运行,请删除不相关的 Tomcat 服务器,确保在运行时选择正确的服务器:窗口 -> 首选项 -> 服务器 -> 运行时环境 -> 删除所有不相关的服务器
  8. 添加服务器 Tomcat 详细信息 在运行服务器之前,双击服务器 ->服务器位置:使用 Tomcat 安装...细节
  9. 右键单击项目 -> 属性 ->
  10. 项目方面 -> 选择:动态 Web 模块、Java、JavaScript、JAX-RS (REST Web services) -> 运行时 -> 选择合适的服务器 -> 应用 -> 应用并选择
  11. 启动服务器 -> 运行项目 ->浏览器 http://localhost:8080/->显示Tomcat的欢迎页面

环境

  • Mac os x 10.13.2, x86_64
  • 日食氧气.2 发布 (4.7.2)
  • 后端
    • 爪哇 jdk1.8.0_151-b12
      • 雄猫 8.5
      • Maven 3.5.2 默认区域设置:en_AU,平台编码:UTF-8
      • 泽西岛 1.19
    • 节点 8.9.4
      • NPM 5.6.0
      • 鲍尔 1.8.2
      • 节点 1.14.11

这是网络.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>Graybox</display-name>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

这是绒球.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>graybox</groupId>
<artifactId>graybox</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<finalName>graybox</finalName>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
</project>

由于意外关闭了我的Eclipse,Java构建路径似乎没有拯救Maven。这与阿迪回答的答案之一相同

java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

右键单击 eclipse 项目属性 -> 部署程序集 -> 添加 -> Java 构建路径条目 -> Gradle 依赖项 ->完成。

最新更新