簡體   English   中英

運行泊塢窗圖像時找不到主類

[英]No Main Class found when running a dockerizing image

我有一個大學項目,其中包括構建一個 Java Spring Boot 應用程序,該應用程序可以處理多個 API,這些 API 可以啟動運行 jar 應用程序的新 docker 容器。

目前,我能夠試驗 Spring Boot 的工作原理,因此我構建了一個簡單的 jar 來部署一個簡單的問候 API,該 API 返回“Hello World!”

所以我使用 jib-core 構建並推送了一個 docker 鏡像到我的 DockerHub 存儲庫,它工作正常。

public static void main(String[] args) throws InvalidImageReferenceException, IOException, InterruptedException, ExecutionException, RegistryException, CacheDirectoryCreationException {
    Jib.from("openjdk:15")
            .addLayer(Arrays.asList(Paths.get("apps/demo-0.0.1-SNAPSHOT.jar")), AbsoluteUnixPath.get("/"))
            .setEntrypoint("java", "demo-0.0.1-SNAPSHOT.jar")
            .containerize(
                    Containerizer.to(RegistryImage.named("dmh911/localkube:latest")
                            .addCredential("username", "password")));
}

問題是,當我執行以下命令docker run -i -t dmh911/localkube:latest ,我得到了這個錯誤:

Error: Could not find or load main class demo-0.0.1-SNAPSHOT.jar
Caused by: java.lang.ClassNotFoundException: demo-0.0.1-SNAPSHOT.jar

這是 jar 清單文件:

Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 15
Implementation-Title: demo
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.restservice.DemoApplication
Spring-Boot-Version: 2.3.4.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx

我知道這個問題可能很愚蠢,但我不知道究竟是什么。

您的代碼將執行的是java demo-0.0.1-SNAPSHOT.jar ,它將嘗試運行demo-0.0.1-SNAPSHOT.jar類,該類不太可能存在,因為這可能是您的 jar 的名稱文件,而不是您要運行的類。

相反,您的入口點應該是java -jar demo-0.0.1-SNAPSHOT.jar ,這意味着您需要將代碼更改為.setEntrypoint("java", "-jar", "demo-0.0.1-SNAPSHOT.jar")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM