Java Gradle多项目配置:无法找到或加载主类 问题
我正在使用Gradle构建一个项目,但是每当我想通过Java Gradle多项目配置:无法找到或加载主类 问题,java,gradle,java-8,classpath,Java,Gradle,Java 8,Classpath,我正在使用Gradle构建一个项目,但是每当我想通过java-JAR手动启动JAR时,它就会失败,并出现以下错误:错误:无法找到或加载主类projectz.projectz 描述 我已经发现我需要在Gradle项目中添加以下行: mainClassName = 'projectz.ProjectZ' jar { manifest { attributes('Main-Class': project.mainClassName) } } 然而,这并不能解决问题。
java-JAR
手动启动JAR时,它就会失败,并出现以下错误:错误:无法找到或加载主类projectz.projectz
描述
我已经发现我需要在Gradle项目中添加以下行:
mainClassName = 'projectz.ProjectZ'
jar {
manifest {
attributes('Main-Class': project.mainClassName)
}
}
然而,这并不能解决问题。我不能执行我的jar。用我的IDE(eclipse)构建同一个jar给了我一个工作的jar。将我的META-INF
文件夹复制粘贴到Gradle生成的我的JAR中也不能解决问题
对于我的设置,我使用以下插件:
plugins {
id 'java'
id 'application'
id 'eclipse'
id 'idea'
}
我的项目还依赖于通过Gradle dependencies导入的另一个项目(因为这是一个多项目设置):
编译项目(':Lib')
这个依赖项也没有添加到我的jar文件中,但是当我运行带有Gradle的installDist
时,它被添加了,我可以启动我的jar(只考虑Gradle放在文件夹中的一些批处理文件),java突然发现了我的主类(它不是依赖项的一部分,而是主项目的一部分)。试图以正常的java-jar
方式运行jar文件仍然不起作用
到目前为止我试过什么
我搜索了java给我的错误,并将丢失的行添加到build.gradle文件中,认为这并不能解决我的问题。我还搜索了Gradle文档,以确定是否遗漏了某些内容,但没有找到遗漏的任何内容
我的设置
- 全新Java 8安装(我的项目使用)
- 新的Gradle项目和设置
- 使用Gradle 4.10.2的新Gradle安装
jar
是标准jar,而不是胖jar(请参阅),这就是为什么您不能直接使用java-jar
执行此jar的原因。您的依赖项不包括在此jar中(至少来自您的依赖项目:Lib的代码,当然还有其他外部依赖项)
因此,您应该将构建的脚本更改为procude afat jar,或者使用由应用程序
gradle插件生成的打包应用程序
对于构建胖罐子,您有不同的解决方案,例如:
mainClassName = "org.mycompany.gradle.MainApp"
jar {
manifest {
attributes('Main-Class': project.mainClassName)
}
// HERE : include dependencies into the jar
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
其他解决方案可以在那里找到: