我正在用Gradle构建一个JAR文件。
RxJavaDemo.jar中没有主清单属性
我尝试操作manifest
属性,但我想我忘记添加依赖项或其他内容。我到底做错了什么?
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'demo.MainDashboard'
dependencies {
compile files ("H:/Processes/Development/libraries/hikari-cp/HikariCP-2.4.1.jar")
compile files ("H:/Processes/Development/libraries/controls-fx/controlsfx.jar")
compile files ("H:/Processes/Development/libraries/database_connections/sqlite-jdbc-3.8.6.jar")
compile files ("H:/Processes/Development/libraries/guava/guava-18.0.jar")
compile files ("H:/Processes/Development/libraries/rxjava/rxjava-1.0.12.jar")
compile files ("H:/Processes/Development/libraries/rxjava-extras/rxjava-extras-0.5.15.jar")
compile files ("H:/Processes/Development/libraries/rxjavafx/RxJavaFX-1.0.0-RC1-SNAPSHOT.jar")
compile files ("H:/Processes/Development/libraries/rxjavaguava/rxjava-guava-1.0.3.jar")
compile files ("H:/Processes/Development/libraries/rxjava-jdbc/rxjava-jdbc-0.6.3.jar")
compile files ("H:/Processes/Development/libraries/slf4j/slf4j-api-1.7.12.jar")
compile files ("H:/Processes/Development/libraries/tom-commons/tom-commons.jar")
}
sourceSets {
main.java.srcDir "src/main/java"
main.resources.srcDir "src/main/resources"
}
jar {
manifest {
attributes(
"Class-Path": configurations.compile.collect { it.getName() }.join(' '))
}
from configurations.compile.collect { entry -> zipTree(entry) }
}
4条答案
按热度按时间aelbi1ox1#
尝试更改清单属性,如:
然后只需将
'hello.helloWorld'
更改为'<your packagename>.<the name of your Main class>'
(其中Main类有一个main方法)。在这种情况下,您在清单中创建一个属性,该属性指向此类,然后jar正在运行。z31licg02#
要使
jar
文件可执行(以便java -jar
命令工作),请在MANIFEST.MF
中指定Main-Class
属性。在Gradle中,您可以通过配置
jar
任务来完成此操作。为什么
mainClassName
不能正常工作?或者为什么
mainClassName
没有在清单中指定属性?mainClassName
属性来自application
plugin。插件:在开发过程中可以轻松地在本地启动应用程序,并将应用程序打包 * 为TAR和/或ZIP***,包括操作系统特定的启动脚本 *。
application
插件的目的不是生成可执行的jar
s*当
mainClassName
属性设置时,则:$ ./gradlew run
将在属性中指定的类中启动main
方法1.使用
distZip
/distTar
任务构建的zip
/tar
存档将包含一个脚本,该脚本将启动指定的先前类的main
方法。下面是设置主类的shell脚本行:
ovfsdjhp3#
为了补充Denis Zavedeev answer,这里有更多的Kotlin DSL(build.gradle.kts)方法:
另一个符号:
旁注:要创建可运行的fat JAR(也称为uber JAR),请参阅this post。
vpfxa7rd4#
FWIW -我使用以下jar任务将所有编译依赖项组装到jar文件中,并使用上述建议正确设置类路径