繁体   English   中英

Docker 无法在 Java spring 引导中找到或加载主要 class

[英]Docker could not find or load main class in Java spring boot

我有一个简单的 spring 引导服务器,其结构如下:

.
├── Dockerfile
├── HELP.md
├── demo.iml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── DemoApplication.java
│   │   │               ├── Employee.java
│   │   │               ├── EmployeeResource.java
│   │   │               ├── exceptions
│   │   │               │   └── UserNotFoundException.java
│   │   │               ├── repo
│   │   │               │   └── EmployeeRepo.java
│   │   │               └── service
│   │   │                   ├── DockerFile
│   │   │                   └── EmployeeService.java
│   │   └── resources
│   │       ├── META-INF
│   │       │   └── MANIFEST.MF
│   │       ├── application.properties
│   │       ├── static
│   │       └── templates
│   └── test
│       └── java
│           └── com
│               └── example
│                   └── demo
│                       └── DemoApplicationTests.java
└── target
    ├── classes
    │   ├── META-INF
    │   │   └── MANIFEST.MF
    │   ├── application.properties
    │   └── com
    │       └── example
    │           └── demo
    │               ├── DemoApplication.class
    │               ├── Employee.class
    │               ├── EmployeeResource.class
    │               ├── exceptions
    │               │   └── UserNotFoundException.class
    │               ├── repo
    │               │   └── EmployeeRepo.class
    │               └── service
    │                   └── EmployeeService.class
    ├── demo.jar
    ├── generated-sources
    │   └── annotations
    ├── generated-test-sources
    │   └── test-annotations
    └── test-classes
        └── com
            └── example
                └── demo
                    └── DemoApplicationTests.class

和我重合的 Dockerfile:

FROM "ANYONMOUS REPO" as builder
USER root
COPY src /src
ADD target/demo.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]

该服务器在本地运行时运行良好,但当我创建 docker 图像并尝试运行它时,出现以下错误:

Error: Could not find or load main class com.example.demo.DemoApplication

I am not sure how I would go about targeting the main class in the package itself, I tried using this command in my Dockerfile: CMD java -classpath src/java com.example.demo in an attempt to target this package but I still get同样的错误。 有没有不同的方法来定位 Jar 文件和 Docker 中的主要 class?

我遇到了类似的问题。 您可以尝试以下操作;

第 1 步:将以下内容添加到您的 pom.xml。

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

第 2 步:清理并构建您的项目。 这应该在您的 META-INF/MANIFEST.MF 中自动为“Main-Class”指定一个值

mvn clean package spring-boot:repackage

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM