【问题标题】:Docker container cannot find the main class of api-rest in jar when launchDocker容器启动时在jar中找不到api-rest的主类
【发布时间】:2020-02-05 14:16:26
【问题描述】:

我用 gradle 构建了我的 spring-boot api 的 jar,但是在启动 docker 容器后它会自行停止并显示“错误:无法找到或加载主类 com.test.exampleController”

这是一个 Docker 项目

我将此代码插入到我的 build.gradle 中:

task fatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'com.test.exampleController'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

我不确定我是否需要在课堂上进行一些注释,或者问题是因为我有 3 个控制器

我希望使用 tha spring-boot api 运行一个 docker 容器,并使用其他应用程序(例如邮递员)对其进行测试

【问题讨论】:

  • 不要编写自己的任务。 gradle spring boot 任务完成了所有这些。所以放弃你的fatJar任务,只使用spring boot任务(如果你简单地添加插件,它将默认执行)。
  • 我尝试使用 gradle 任务生成 jar 文件,但没有生成任何内容。我按照以下步骤操作: gradle tab --> projectName --> Tasks --> build --> jar 我认为我的 build.gradle 中需要一个 instruccion 缺失,你能给我一个例子吗?感谢您的回复。
  • 好吧,我终于找到了我的 gradle 中缺少的代码:``` jar { baseName = 'example-api' version = '0.1.0' } ``
  • 应用 spring boot 插件,只需执行 gradle build 即可。它将采用默认值(名称和组)来生成工件。

标签: java spring-boot docker gradle jar


【解决方案1】:

最后我发现了错误,我尝试使用不正确的启动器构建 jar。在 gradle 选项卡中,我可以找到任务,在 build 内部在其他人之间出现“jar”,这是我的错误,我在想“如果我想要一个 jar,这是我的任务”,但不是,我想要一个 springboot 的 jar,这意味着我需要那个 jar 有主类和启动器。为此,我的任务中存在另一个选项“bootjar”。构建一个定义了主类和启动类的清单文件。辅助图片

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 2021-03-23
    • 2022-01-13
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多