java - 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 中的主类?
解决方案
推荐阅读
- php - 当表单提交的动作不执行时
- c - 试图从用户读取双精度,出现分段错误
- mysql - 来自两个表的 SQL Union SELECT 然后合并为一行
- python-2.7 - 如何使用遍历循环从字符串中提取元素
- swift - SKAction 运行块中的 SpriteKit 内存泄漏
- javascript - React/canvas 组件上的 Mousemove 事件
- java - 如何从 onClick 更改为 onTouch 方法?
- typescript - 发布 TypeScript 包时如何处理可选的对等依赖项?
- cpu - 存储在通用寄存器中的内存地址是相对的吗?
- php - 在 PHP 脚本中指示文件在 Sublime Text 中打开