通过 gradle 构建后无法找到或加载主类

Posted

技术标签:

【中文标题】通过 gradle 构建后无法找到或加载主类【英文标题】:Could not find or load main class, after build by 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 文件或至少其中的更多部分? 【参考方案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'

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

【讨论】:

以上是关于通过 gradle 构建后无法找到或加载主类的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 收到错误“错误:无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain”

Gradle(包装器)+ STS + Spring Boot:错误:无法找到或加载主类 1.1,

Xcode 构建失败:无法找到或加载主类

Spring Boot gradle“找不到或加载主类”

React Native Android - 无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain

如何修复“无法找到或加载主类 org.gradle.launcher.daemon.bootstrap.GradleDaemon”?