第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有 Maven jar 的 docker

帶有 Maven jar 的 docker

翻過高山走不出你 2024-01-25 15:13:44
我正在 docker 容器中運行 Maven 項目,出現(xiàn) Could not find or load main class 錯誤。FROM maven:3.6.0-jdk-11-slim AS buildCOPY src srcCOPY pom.xml .RUN mvn -f pom.xml clean package installFROM openjdk:8-jreCOPY --from=build /target /opt/targetWORKDIR /targetRUN lsCMD ["java", "-jar", "Customer.jar"]上面的程序集是使用以下插件創(chuàng)建的<build><plugin>    <artifactId>maven-assembly-plugin</artifactId>    <configuration>        <archive>            <manifest>                <mainClass>com.companyname.Customer</mainClass>            </manifest>        </archive>        <descriptorRefs>            <descriptorRef>jar-with-dependencies</descriptorRef>        </descriptorRefs>    </configuration>    <executions>        <execution>            <id>make-assembly</id> <!-- this is used for inheritance merges -->            <phase>package</phase> <!-- bind to the packaging phase -->            <goals>                <goal>single</goal>            </goals>        </execution>    </executions></plugin>錯誤錯誤:無法找到或加載主類 com.mycompany.Customer問題:如何在 docker 中設(shè)置 jar 文件的類路徑?編輯我測試了以下但相同的問題。CMD ["java", "-cp", "Customer.jar:libs/*", "com.company.customers.Customer"]錯誤:無法找到或加載主類 com.company.customers.Customer
查看完整描述

1 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊

這不是 Docker 問題,而是 Java 問題。有多種方法可以定義類路徑條目來運行可執(zhí)行 jar。

陰影或 Uber jar 方法

在這種情況下,您應(yīng)該創(chuàng)建一個陰影 jar,其中包含一個可執(zhí)行 jar 文件中的所有依賴類。Maven 有一個名為Apache Maven Shade Plugin 的插件來創(chuàng)建 uber-jar 工件。

最后運行:

java?-jar?shaded-artifact.jar

或者在 Docker 中

CMD?["java",?"-jar",?"shaded-artifact.jar"]

命令行類路徑方法

如果創(chuàng)建的 jar 工件需要存在其他(依賴的)jar,則您必須指定類路徑。在這種情況下,將所有必需的 jar 復(fù)制到文件夾(例如lib)中并使用以下命令:

java?-cp?'<name-of-jar.jar>:<path-of-dependencies>'?<fully.quialified.main.ClassName>

正如您所看到的,通配符 (*) 字符和多個類路徑元素允許用:?so分隔

java?-cp?'Customer.jar:libs/*'?com.mycompany.Customer

在 Docker 中

CMD?["java",?"-cp",?"Customer.jar:libs/*",?"com.mycompany.Customer"]

MANIFEST 方法中的類路徑

將所有這些依賴工件收集到一個文件夾后,您只需在META-INF/MANIFEST.MFClass-Path文件中添加一個條目,如下所示:

Class-Path:?.?lib/*

并運行

java?-jar?Customer.jar

或者在 Docker 中

CMD?["java",?"-jar",?"Customer.jar"]

其中哪一個最好取決于很多因素,你必須做出選擇。

編輯:

根據(jù)更新的問題, uber jar 似乎是由程序集插件使用jar-with-dependencies預(yù)定義描述符創(chuàng)建的。這將創(chuàng)建另一個 jar 文件,該文件放置在目標(biāo)(輸出)文件夾下,其名稱以-jar-with-dependencies.jar

  1. 使用該罐子代替基本工件。

  2. 仔細(xì)檢查以確保所有<mainClass>條目都指向現(xiàn)有的類。您在同一問題中提到了三個不同的主類。

  • com.公司名稱.客戶

  • com.mycompany.Customer

  • com.company.customers.Customer

注意Linux和Java都是區(qū)分大小寫的。在此基礎(chǔ)上,類名必須準(zhǔn)確無誤Customer,所有文件夾名稱必須小寫。

希望能幫助到你。


查看完整回答
反對 回復(fù) 2024-01-25
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號