问题描述
Hi 从 git 导入了一段代码,我运行主类时代码运行。但是,我无法创建 jar 文件。 我将此添加到父 build.gradle:
classifier 'fat'
manifest {
attributes 'Main-Class': 'SampleClient'
}
exclude 'meta-inf/*.DSA','meta-inf/*.RSA','meta-inf/*.SF'
}
当我运行时
./gradlew clean fatjar
它会在 .out 文件夹中创建一个 jar 文件。但是jar似乎不包含任何类文件
jar -tf <Folder>/.out/libs/testJob-1.6.0.17-SNAPSHOT-fat.jar
meta-inf/
meta-inf/MANIFEST.MF
当我运行 jar 时,它给出了“找不到主类”的错误
java -jar <Folder>/.out/libs/testJob-1.6.0.17-SNAPSHOT-fat.jar
Error: Could not find or load main class SampleClient
不确定我哪里出错了。
整个包包含三个模块
主类 -- SampleClient 位于示例模块中。
任何指针都会有所帮助。并提出任何问题,我可以分享必要的细节。
解决方法
你能不能尝试创建一个单独的 gradle 任务并尝试同样的方法,有多种方法可以做到这一点 ref: https://www.baeldung.com/gradle-fat-jar
task customFatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'Application-path'
}
baseName = 'jar-name'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
将 main-class 中的应用路径和 baseName 替换为 jar 名称。