【发布时间】:2020-04-21 20:18:04
【问题描述】:
我创建了一个 Netbeans Gradle 项目,我正在尝试找到将其导出到 .jar 文件的最佳方法,以便可以从 IDE 外部打开它。我在我的项目中使用依赖项,我收到一个 java.lang.NoClassDefFoundError。
为了解决这个问题,我尝试添加
jar {
manifest {
attributes "Main-Class": "CollegeCounselor.Main"
}
from{
configurations.compile.collect{ it.isDirectory() ? it : zipTree(it)}
}
}
到我的 build.gradle 文件。但是,这引发了 java.lang.SecurityException: Invalid signature file digest for Manifest main attributes。
为了解决这个问题,我找到了添加建议
{exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'}
到我的文件。这解决了通过命令行运行文件的问题。通过java -jar 运行它现在可以工作了。但是,我仍然无法通过我的 mac 上的 finder 运行它。它给了我一个错误,说无法启动 java jar,并告诉我检查控制台以获取更多详细信息。我无法理解如何解决这个问题,或者为什么我可以通过命令行而不是通过 finder 窗口运行它。我要去 build/libs/file.jar 路径并尝试打开这个文件。
任何有关导出此项目的最佳方式的帮助将不胜感激。
这是我的完整 build.gradle 文件:
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'application'
mainClassName = 'CollegeCounselor.Main'
repositories {
jcenter()
}
dependencies {
testCompile 'junit:junit:4.12'
compile('com.microsoft.graph:microsoft-graph:1.5.+')
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.4.0'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
}
jar {
manifest {
attributes "Main-Class": "CollegeCounselor.Main"
}
from { (configurations.runtime).collect { it.isDirectory() ? it : zipTree(it) } }
{
exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
}
}
【问题讨论】:
-
更新您的问题以显示:[1] jar 文件中的 MANIFEST.MF 的内容在您的 Mac 上不起作用。 [2] 您在 Mac 上遇到的错误的确切文本。 [3]
brew info gradle的输出。