」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 從命令列運行時,如何解決 Maven 中的「NoClassDefFoundError」問題?

從命令列運行時,如何解決 Maven 中的「NoClassDefFoundError」問題?

發佈於2024-11-08
瀏覽:887

How can I resolve the \

透過Shade 外掛程式解決NoClassDefFoundError 的依賴關係

第一次使用Maven 時,Eclipse 和命令列使用之間可能會出現不一致,原因是依賴管理。儘管在 Eclipse 中成功建立了 Maven 專案並新增了依賴項,但透過命令列執行專案可能會導致 NoClassDefFoundError。

預設情況下,Maven 會單獨打包依賴項,並且不會將它們包含在編譯的 JAR 檔案中。此遺漏會導致 Java VM 在執行期間嘗試定位庫類別時失敗。

maven-shade-plugin 提供了更有效的解決方案,而不是手動將程式庫新增至類別路徑。它創建一個“uber-JAR”,將應用程式類別與所需的庫程式碼組合在一起。

要實現此目的,請將以下插件配置新增至您的 POM:

<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>

新增此設定後,重新執行下列指令:

$ mvn package
$ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App

對於高階設定選項,例如指定包含的JAR 或可執行JAR 文件,請參閱maven-shade-plugin 網站上的「範例」部分。

最新教學 更多>
  • 如何在 CSS 中在背景上建立曲線?
    如何在 CSS 中在背景上建立曲線?
    在背景上創建曲線在網頁開發領域,設計師經常會遇到出於美學目的創建曲線的需要。其中一個場景是將剪切曲線放置在背景頂部,而不是右側。 要實現這一點,需要修改現有的 CSS 程式碼來調整曲線的位置和形狀。操作方法如下:調整偽元素位置:調整偽元素位置:更改偽元素的位置(.box:之前和.box: after...
    程式設計 發佈於2024-11-08
  • 捕捉 Django 應用程式中的錯誤的最佳方法
    捕捉 Django 應用程式中的錯誤的最佳方法
    在 Web 開發的世界中,錯誤是整個過程中不可避免的一部分。但對於 Django(最受歡迎的 Python Web 框架之一)來說,擁有可靠的錯誤捕獲策略可以在流暢的用戶體驗和令人沮喪的用戶體驗之間產生巨大的差異。 作為開發人員,我們經常發現自己不斷地與難以捉摸的錯誤和意外行為作鬥爭。無論您是建立...
    程式設計 發佈於2024-11-08
  • 如何將 GORM 欄位註解整合到 Protobuf 定義中?
    如何將 GORM 欄位註解整合到 Protobuf 定義中?
    將欄位註解整合到Protobuf 定義中尋求在其protobuf 定義中使用GORM 提供的欄位註解的開發人員可能會因註解缺少欄位註解而遇到挑戰Protobuf 3 語法中的本機日期時間類型。 為了解決這個問題,可以使用後處理腳本來使用所需的 GORM 註解來增強產生的原型文件。例如,給定以下 pr...
    程式設計 發佈於2024-11-08
  • 開發人員如何建立即時 Web 應用程式?
    開發人員如何建立即時 Web 應用程式?
    在不断发展的技术世界中,实时 Web 应用程序已成为寻求增强用户参与度和简化沟通的企业的强大解决方案。这些应用程序提供即时更新和交互,使其在消息传递、游戏和电子商务等领域至关重要。对于开发人员,特别是那些在澳大利亚开发人员来说,了解构建实时应用程序的细微差别至关重要。本文将探讨创建实时 Web 应用...
    程式設計 發佈於2024-11-08
  • 使用 SAM 框架建置 Go Serverless REST API 並部署到 AWS (Amazon Linux untime)
    使用 SAM 框架建置 Go Serverless REST API 並部署到 AWS (Amazon Linux untime)
    为什么还要另一个 Go 教程 AWS 最近已弃用多项服务和运行时。正如我们所看到的,随着我们喜爱的 CodeCommit 和其他关键服务的终止,AWS Lambda 函数不再支持 Go1.x。 如果您尝试部署大部分过时的教程,您可能会遇到如下错误: Resource creatio...
    程式設計 發佈於2024-11-08
  • C 中的不相交聯合
    C 中的不相交聯合
    目前还不清楚如何在 C: 中表达此 Haskell 类型 data Tree = Leaf Int | Inner Tree Tree 与 Haskell 和 Rust 等语言不同,C 缺乏对的内置支持 不相交联合。然而,如果我们愿意做一些额外的输入,它确实提供了代表它们所需的所有成分。 首先要认识...
    程式設計 發佈於2024-11-08
  • 社群媒體上的圖文貼文有何作用?
    社群媒體上的圖文貼文有何作用?
    圖形貼文透過提高用戶參與度和強化品牌形像在社群媒體行銷中發揮著至關重要的作用。在 Instagram、LinkedIn 和 Facebook 等快節奏的社交平台中,用戶會滾動瀏覽大量內容,引人注目的視覺效果可以讓您的貼文脫穎而出。圖形快速有效地傳達訊息,使其成為與受眾溝通的強大工具。 ...
    程式設計 發佈於2024-11-08
  • 如何使用 javac、Ant 或 Maven 遞歸編譯多個 Java 檔案?
    如何使用 javac、Ant 或 Maven 遞歸編譯多個 Java 檔案?
    如何使用javac 遞歸編譯所有Java 檔案為每個套件使用單獨的shell 指令編譯分佈在多個套件中的大量Java 檔案可能會很乏味包裹。相反,請考慮使用以下方法之一來簡化編譯。 方法1:使用@source產生一個文字檔案(例如,sources.txt) txt),其中列出了要編譯的所有Java文...
    程式設計 發佈於2024-11-08
  • 如何存取 PHP $_GET 數組中的多值參數?
    如何存取 PHP $_GET 數組中的多值參數?
    在 PHP $_GET 陣列中存取多值參數PHP 的 $_GET 超全域數組允許存取查詢字串參數。預設情況下,當為相同參數指派多個值時,僅最後一個值會儲存在 $_GET 中。但是,可以以數組形式檢索此類值。 建立多值$_GET 參數要為查詢字串中的參數傳送多個值,只需使用方括號表示法:http://...
    程式設計 發佈於2024-11-08
  • 如何使用 Python 在文件的特定位置插入一行?
    如何使用 Python 在文件的特定位置插入一行?
    在Python中的文件中間插入一行在文件中的指定位置插入一行,同時保持文件的完整性現有內容可以使用Python 的檔案處理功能來實現。 要在文件中的索引 x 處插入一行,請按照下列步驟操作:開啟檔案進行讀取。 使用 readlines() 方法將整個文件讀入行列表。 使用 insert() 方法在指...
    程式設計 發佈於2024-11-08
  • React、Vue 和 Svelte 中的 JavaScript 框架 – 選擇哪一個?
    React、Vue 和 Svelte 中的 JavaScript 框架 – 選擇哪一個?
    JavaScript 框架在过去几年中取得了显着的发展,成为现代 Web 应用程序的支柱。 2024 年,React、Vue 和 Svelte 脱颖而出,成为最受欢迎的框架,每个框架都有其独特的优点和缺点。如果您正在构建新的 Web 应用程序,选择正确的框架对于项目的成功至关重要。 在本文中,我们将...
    程式設計 發佈於2024-11-08
  • ## 當方法具有指標接收器時,我什麼時候應該避免在 Go 中複製實例?
    ## 當方法具有指標接收器時,我什麼時候應該避免在 Go 中複製實例?
    複製實例時指針接收器的重要性操作資料時,請理解按引用或按值傳遞值的細微差別至關重要。在 Go 中,方法可以使用值接收器或指標接收器來定義,理解這種選擇的含義至關重要,尤其是在複製實例時。 值接收器具有值接收器的方法對它們接收到的值的副本進行操作。方法內所做的任何修改都不會影響原始值。這確保了在複製的...
    程式設計 發佈於2024-11-08
  • 如何修改不可變 Python 字串中的單一字元?
    如何修改不可變 Python 字串中的單一字元?
    錯誤:'str'物件不支援專案分配錯誤:'str'物件不支援專案分配Python字串是不可變的,這意味著一旦創建,它們的單一字元就不能被修改修改的。嘗試直接使用項目分配來修改字元(如代碼s2[j] = s1[i] 所示)會導致錯誤「TypeError: 'st...
    程式設計 發佈於2024-11-08
  • 使用 Java Spring Boot 和 JdbcTemplate 設定 JDBC 以連接到 Databricks
    使用 Java Spring Boot 和 JdbcTemplate 設定 JDBC 以連接到 Databricks
    在軟體開發領域,連接到各種資料來源是一項基本技能。 Databricks 是一個基於雲端的資料分析平台,提供了一種處理和分析大量資料的強大方法。在這篇文章中,我們將探討如何使用 Java 和 Spring 的 JdbcTemplate 來配置 JDBC 連線來連接到 Databricks,讓您能夠充...
    程式設計 發佈於2024-11-08
  • Copilotkit:您的程式設計冒險人工智慧僚機
    Copilotkit:您的程式設計冒險人工智慧僚機
    简介:当人工智能遇见代码(火花四溅) 在不断发展的科技世界中,算法起舞,数据流歌唱,镇上出现了一位新玩家:Copilotkit。这就像有一个非常聪明的朋友,他从不睡觉,不会喝掉你所有的咖啡,也不会因为你凌晨 3 点穿着睡衣编码而评判你。欢迎来到编码的未来,人工智能不仅是辅助,而且是...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3