Java 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) } } 然而,这并不能解决问题。

我正在使用Gradle构建一个项目,但是每当我想通过
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安装

您使用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) }
    }
}
其他解决方案可以在那里找到: