首页 > 解决方案 > Docker 无法在 Java Spring Boot 中找到或加载主类

问题描述

我有一个简单的 Spring Boot 服务器,其结构如下:

.
├── 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.

我不确定如何定位包本身中的主类,我尝试在我的 Dockerfile CMD java -classpath src/java com.example.demo中使用这个命令:试图定位这个包,但我仍然得到同样的错误。是否有不同的方法来定位 Jar 文件和 Docker 中的主类?

标签: javaspringspring-bootdocker

解决方案


推荐阅读