首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Jetty 啟動 NoClassDefFoundError: org/eclipse/jdt/internal/compiler/ast/Expression 解決:Maven 依賴衝突清理

     編輯:程式設計綜合問答

錯誤堆疊

Caused by: java.lang.ClassNotFoundException: org.eclipse.jdt.internal.compiler.ast.Expression

JSP 編譯需 JDT 編譯器,類缺失導致 JSP 無法編譯。

根本原因

Maven 本地倉庫 ~/.m2 殘留舊版 Jetty/JSP 相關 JAR(如 jetty-jsp-2.1、org.eclipse.jdt.core),版本不一致導致類加載失敗。pom.xml 中聲明 jetty.version=6.1.26 但實際解析到混合版本。

解決步驟

  1. 刪除本地倉庫相關目錄:
    rm -rf ~/.m2/repository/org/mortbay/jetty
    rm -rf ~/.m2/repository/org/eclipse/jdt
  2. Maven 強制更新:
    mvn clean compile dependency:purge-local-repository -DreResolve=true
  3. 或 IDE 中:Maven → Reload Project + "Force Update Snapshots/Releases"。

依賴精簡建議

Jetty 6.x 已極老(2012 年),若非維護舊專案,**強烈建議升級 Jetty 9/10/11 或遷移至 Spring Boot 內嵌 Tomcat/Jetty**。若必須用 Jetty 6,鎖定版本:

<properties>
  <jetty.version>6.1.26</jetty.version>
</properties>
<dependencies>
  <dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
    <version>${jetty.version}</version>
  </dependency>
  <dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jsp-2.1-jetty</artifactId>
    <version>${jetty.version}</version>
  </dependency>
  <!-- 移除 glassfish 相關,避免衝突 -->
</dependencies>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved