首頁 > Java > java教程 > 主體

在 Eclipse 之外運行應用程式時,為什麼我會收到 Maven 依賴項的「NoClassDefFoundError」?

Linda Hamilton
發布: 2024-10-25 08:44:29
原創
337 人瀏覽過

Why do I get a `NoClassDefFoundError` for Maven dependencies when running my application outside of Eclipse?

Maven 依賴項上的 NoClassDefFoundError

將 Maven 依賴項整合到專案中時,必須解決潛在的依賴項解析問題。一個常見問題是在 Eclipse 外部執行應用程式時遇到「NoClassDefFoundError」。

理解問題

當Java 虛擬機器(JVM) 運作時,會發生「NoClassDefFoundError」)無法找到正在執行的程式中所引用的類別的字節碼定義。當該類別在運行時在指定的類別路徑上不可用時,可能會發生這種情況。

在所描述的情況下,錯誤是由於 Jackson 庫中缺少類別定義引起的,即使這些依賴項是在 POM 檔案中聲明的。這表明依賴項已成功下載並構建,但它們未包含在打包的 JAR 檔案中。

使用 Maven-Shade-Plugin 解決問題

Maven 不會自動在其產生的 JAR 檔案中包含依賴項。要解決此問題,請考慮使用 maven-shade-plugin。該插件允許您將庫代碼“隱藏”到輸出 JAR 檔案中。

第1 步:註冊Maven-Shade-Plugin

將以下內容新增至您的POM檔案來註冊maven-shade-plugin:

<code class="xml"><plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.5.2</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
    </execution>
  </executions>
</plugin></code>
登入後複製

第2 步:重新執行Maven

註冊插件後重新執行以下命令:

$ mvn package
$ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App
登入後複製

這應該解決「NoClassDefFoundError」並允許應用程式從命令列成功運行。

進一步配置

maven-shade-插件提供了高級配置選項,用於微調依賴項包含、為可執行 JAR 檔案指定主類別等。更多詳情請參閱插件官方文件。

以上是在 Eclipse 之外運行應用程式時,為什麼我會收到 Maven 依賴項的「NoClassDefFoundError」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!