我有以下项目结构:
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包含所有必需的类文件
答案 0 :(得分:1)
application
插件不会生成带Main-Class
条目的可运行JAR。相反,它使用Windows和* nix启动脚本生成分发,其中使用主类,并将所有库放入类路径。
如果你想要一个可运行的JAR,你必须自己配置它,或者使用一个产生胖JAR的插件,还包括可运行JAR的依赖(我不喜欢这个,但是它有效如果目标计算机具有正确的文件关联集)。如果是目标计算机e。 G。将JAR文件与归档工具相关联,双击JAR将在归档工具中打开JAR,而不是运行您的应用程序。
如果要运行应用程序,请使用gradlew run
或执行gradlew installDist
,然后执行安装到build/install/...
的应用程序。这就是application
插件的工作原理。使用gradlew distZip
或gradlew distTar
,您可以创建应用程序的可发送档案。