透過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 網站上的「範例」部分。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3