【问题标题】:Could not find or load main class, after build by gradle通过 gradle 构建后无法找到或加载主类
【发布时间】:2018-04-07 10:47:05
【问题描述】:

我在 ma​​ven 和 spring boot 中做了一个项目。通过 maven 构建后,它工作完美。 毕竟我决定把我的项目换成 gradle。现在,之后:

gradle build

出现以下异常。错误:

Error: Could not find or load main class

在我问这个问题之前,我检查了以下几点:

  • 确保我有 main 方法(我显然有,maven 做得很好)
  • 已检查清单中主类的路径以及 gradle 中的 jar 任务中的路径
  • 发现编译的类在指定路径的指定jar中
  • 在 gradle 中创建了一个 jar 任务,如下所示:

    jar {
      manifest {
        attributes 'Main-Class': 'pl.sygnity.schedulein.App'
      }
    }
    

我不知道我还能做些什么。 你能帮帮我吗?

编辑。 我希望将我的程序用作 jar,这很重要:

java -jar xx.jar

编辑2。

gradle run

让我的应用程序启动。所以看起来好像 gradle build 不能以某种方式工作......

【问题讨论】:

  • 在切换到 gradle 之前,java -jar xx.jar 工作了吗?
  • 是的。使用 maven,我能够像那样运行我的程序。
  • 您能否发布您的整个build.gradle 文件或至少其中的更多部分?

标签: java spring maven spring-boot gradle


【解决方案1】:

您需要在 build.gradle 文件中定义主类。 (您可能有多个,您需要选择使用哪一个)

我喜欢和Gradle - the application plugin一起做

apply plugin: 'application'
mainClassName = "<Your main class>"

然后你可以运行gradle install 来构建带有执行器的程序。

【讨论】:

  • 感谢回复,其实没什么变化:)
  • 运行gradle install后,您将拥有一个目录build/install/&lt;project name&gt;/bin,其中包含2个具有项目名称的可执行文件(一个用于windows,一个用于linux/mac)
  • 正如我上面提到的问题,我正在运行我的应用程序,如 java -jar xx.jar,项目要求。但事实是,当我运行 .bat 文件时,我会在春季运行。
【解决方案2】:

您需要修改您的 gradle 清单。

jar {
    manifest {
        attributes <...>
                   'Main-Class': 'main.myMainClass'
    }
}

否则,您可以像这样更改源字段的路径。

sourceSets.main.java.srcDirs = ['MAINFOLDER'] // 'src'

【讨论】:

  • 我已经像这样定义了 jar 任务(我修改为问题以强调这一点),而“其他明智的”提示没有帮助
  • 我收到一个错误。意外标记: ^
【解决方案3】:

所以我发现这些步骤使我的罐子工作得很好。

已删除

apply plugin: 'maven'

添加

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

有点奇怪,但也许有人会遇到同样的问题。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2018-09-12
    • 2017-12-14
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多