【问题标题】:NoClassDefFoundError when I want to dockerize my SpringWebFlux project当我想对 SpringWebFlux 项目进行 dockerize 时出现 NoClassDefFoundError
【发布时间】:2022-02-03 17:39:07
【问题描述】:

我想对我的响应式 SpringBootApp 进行 dockerize。

这是主类:Main Class

但我收到此错误:NoClassDefFoundError

这是我的 build.gradle 文件:

Build.gradle Part 1

Build.gradle Part 2

这是我的 Dockerfile:DockerFile

有人可以建议我,我该如何解决这个问题?

另外,我在我的应用程序中使用 PostgreSQL。我应该添加一些东西让 docker 工作,还是什么都不需要?

这是我的 PostgreSQL 配置:PostgreSQL Configuration

【问题讨论】:

  • 请不要发布代码、配置或其他文本/文件的图片。在此处复制原文+可能使用代码格式工具进行格式。
  • 好的,我下次就这样,谢谢。

标签: spring docker gradle docker-compose dockerfile


【解决方案1】:

不是 gradle 专家,但我认为您缺少依赖项 实现 'org.springframework.boot:spring-boot-starter'

有关更多信息,请查看: https://docs.gradle.org/current/samples/sample_building_spring_boot_web_applications.html

【讨论】:

  • 它是响应式应用程序,所以我使用: implementation 'org.springframework.boot:spring-boot-starter-webflux' 而不是您的建议:org.springframework.boot:spring-boot-starter'。当我使用 IntelliJ 而不是 docker 运行我的应用程序时,我的应用程序可以工作
  • 你可以用命令行运行应用程序吗? java -jar app.jar ?
  • 同样的错误... NoClassDefFoundError
  • 但是我可以使用 java -jar demo-0.0.1-SNAPSHOT.jar 这个 demo-0.0.1-SNAPSHOT.jar 在 build/libs 文件夹中运行应用程序,而 app.jar 在 build /docker 文件夹。
  • 当我使用 docker demo-0.0.1-SNAPSHOT-plain.jar 在 build/libs 文件夹中创建运行时,它与 app.jar 相同,因为在我的 docker 配置中我正在重命名它到 app.jar。但是这个 demo-0.0.1-SNAPSHOT-plain.jar 与 demo-0.0.1-SNAPSHOT.jar 不同。为什么它们不同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 2011-10-09
  • 2012-04-18
  • 2012-07-17
相关资源
最近更新 更多