簡體   English   中英

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

[英]Jersey error java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

我的 Node.JS API (localhost) 調用了 Tomcat 服務器 (localhost) 上的 Jersey 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)
    ...

我已經調查了很多,但我仍然找不到解決問題的方法。 下面是我之前做的嘗試解決這個問題,里面還附上了dev環境,web.xml和pom.xml。 謝謝。

  1. 安裝 maven (brew)、m2eclipse (Eclipse 安裝新軟件)、m2e-wtp (Eclipse 安裝新軟件) Eclipse 安裝新軟件:Help -> Install New Software -> 將 url 復制粘貼到“Work with”中 -> 全選並下一步並完成m2eclipse m2e-wtp
  2. Eclipse:導入 -> 現有 Maven 項目 -> 選擇“graybox”項目文件夾
  3. 在 Eclipse 中重建 Maven 全局索引: 詳細信息
  4. 在 Maven 中添加依賴項以確保所有球衣依賴項都在同一版本中,例如所有 1.19 版本 jersey-server、jersey-bundle、jersey-core、jersey-json 原因
  5. 清理 Maven 依賴項
    1. 項目 -> 清潔 -> 清潔
    2. 右鍵項目 -> Maven -> 更新項目
    3. 右鍵單擊項目 -> 運行方式 -> 4(或 5)Maven 構建 -> 目標:全新安裝 -> 應用 -> 運行細節
  6. 如果有多個Tomcat服務器在運行,刪除不相關的Tomcat服務器,確保在運行時選擇正確的:Window -> Preferences -> Server -> Runtime Environments -> Remove all unrelated servers
  7. 添加服務器Tomcat Detail在運行服務器之前,雙擊服務器-> Server Locations:使用Tomcat安裝... Detail
  8. 右鍵單擊項目 -> 屬性 -> 項目構面 -> 選擇:動態 Web 模塊、Java、JavaScript、JAX-RS(REST Web 服務) -> 運行時 -> 選擇正確的服務器 -> 應用 -> 應用並選擇
  9. 啟動服務器 -> 運行項目 -> 瀏覽器http://localhost:8080/ -> 顯示 Tomcat 的歡迎頁面

環境

  • Mac 操作系統 x 10.13.2、x86_64
  • Eclipse Oxygen.2 發布 (4.7.2)
  • 后端
    • Java jdk1.8.0_151-b12
    • 雄貓 8.5
    • Maven 3.5.2 默認語言環境:en_AU,平台編碼:UTF-8
    • 澤西島 1.19
    • 節點 8.9.4
    • 新產品管理 5.6.0
    • 涼亭 1.8.2
    • Nodemon 1.14.11

這是 web.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>

這是 pom.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 Build Path 似乎沒有保存 Maven。 和阿迪回答的其中一個答案一樣

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

右鍵單擊您的 eclipse 項目 Properties -> Deployment Assembly -> Add -> Java Build Path Entries -> Gradle Dependencies -> Finish。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM