【发布时间】:2016-12-03 07:35:21
【问题描述】:
我创建了一个 Spring boot gradle 应用程序。我在 build.gradle 中将主类名指定为
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'
sourceCompatibility = 1.8
def appName = 'app'
buildDir = 'gradle-build'
mainClassName = 'package.Application'
dependencies{
----
}
configurations {
compile.exclude group: 'ch.qos.logback'
}
jar {
baseName = appName
manifest {
attributes 'Implementation-Title': 'app',
'Implementation-Version': version,
'Main-Class': mainClassName
}
}
startScripts {
applicationName = appName
}
distributions {
main {
baseName = appName
}
}
当我从 Eclipse 运行我的主类时,它运行正常。但是当我执行将在 gradle-build 中生成的 jar 文件时,它会抛出错误“无法找到或加载主类”。
我正在执行命令
java -jar app.jar
我也尝试过其他命令
java -cp -jar app.jar
java -cp app.jar
在所有情况下,我都会遇到相同的错误。
而我的清单文件是这样的
Manifest-Version: 1.0
Implementation-Title: app
Implementation-Version: 1.0.0
Main-Class: package.Application
请帮我解决这个问题。
【问题讨论】:
-
您是否尝试过告知文件的整个路径?示例:
java -jar "C:/myworkspace/myproject/myjar.jar" -
是的。我做到了。没有运气。我正在使用 mac,所以我从“/users/till/jarfile”指定了绝对路径
-
你在 jar 中的
META-INF/MANIFEST.MF中有一个Main-Class条目吗? -
是的。有入口。 Manifest-Version: 1.0 Implementation-Title: app Implementation-Version: 1.0.0 Main-Class: package.Application 这是我的 Manifest 文件
-
当您使用
java -cp时,您会通知主类而不是jar。java -cp MyMainClass.class