gradle项目:错误无法找到主类

时间:2017-06-29 13:26:33

标签: java gradle

我有以下项目结构:

Root project 'rmi-tutorial'
+--- Project ':client'
+--- Project ':lib'
\--- Project ':server'

客户端主类的路径如下所示:

client/src/main/java/client/ComputePi.java

客户端子项目的build.gradle如下所示:

dependencies {
    compile project(':lib')
}
mainClassName = "ComputePi"

主build.gradle文件就是这个:

subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'application'
    repositories {
       mavenCentral()
    }

    dependencies {
    //compile project(':server')
    //compile project(':client')
        testCompile 'junit:junit:4.12'
    }

    version = '1.0'

    jar {
        manifest.attributes provider: 'gradle'
    }
}

到目前为止,jar的生成工作,但jar中的MANIFEST.MF文件是错误的。它包含以下内容:

Manifest-Version: 1.0
provider: gradle

我指定的主要课程在哪里?当我尝试执行gradle application - 插件创建的启动脚本时,我收到错误:couldn't find nor load main class

jar包含所有必需的类文件

1 个答案:

答案 0 :(得分:1)

application插件不会生成带Main-Class条目的可运行JAR。相反,它使用Windows和* nix启动脚本生成分发,其中使用主类,并将所有库放入类路径。

如果你想要一个可运行的JAR,你必须自己配置它,或者使用一个产生胖JAR的插件,还包括可运行JAR的依赖(我不喜欢这个,但是它有效如果目标计算机具有正确的文件关联集)。如果是目标计算机e。 G。将JAR文件与归档工具相关联,双击JAR将在归档工具中打开JAR,而不是运行您的应用程序。

如果要运行应用程序,请使用gradlew run或执行gradlew installDist,然后执行安装到build/install/...的应用程序。这就是application插件的工作原理。使用gradlew distZipgradlew distTar,您可以创建应用程序的可发送档案。