通过 gradle 构建后无法找到或加载主类
Posted
技术标签:
【中文标题】通过 gradle 构建后无法找到或加载主类【英文标题】:Could not find or load main class, after build by gradle 【发布时间】:2018-04-07 10:47:05 【问题描述】:我在 maven 和 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/<project name>/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,
React Native Android - 无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain
如何修复“无法找到或加载主类 org.gradle.launcher.daemon.bootstrap.GradleDaemon”?