经过大量研究,我似乎无法找到使用 Gradle 生成可运行的 Scala jar 文件时遇到的问题的根源。我正在重写“jar”Gradle 任务来创建一个从我的主类文件开始执行的 jar 文件(包括依赖项)。但是,每当我运行它时,无论我使用什么作为 Main-Class 属性,控制台都会抛出“无法找到或加载主类”错误。这是我到目前为止所拥有的:
构建.gradle
buildscript {
repositories {
mavenCentral()
}
}
apply plugin: 'java'
apply plugin: 'scala'
apply plugin: 'application'
repositories {
mavenCentral()
// some other repos
}
version = '1.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = "com.test.Main"
dependencies {
// my dependencies
}
jar {
zip64 = true
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
src/main/scala/com/test/Main.scala
package com.test
object Main {
def main(args: Array[String]): Unit = {
print("Hello world");
}
}
事实上,当我运行“java tf test.jar”时,它在 jar 的根目录中显示“com/test/Main.class”!我是否缺少一些重要的类路径信息或其他信息?我使用 Gradle 3.5 在 macOS Sierra 上运行 Java 1.8。任何帮助表示赞赏。谢谢!
我遇到了类似的问题,结果发现我的 jar 文件中的 META-INF 文件夹包含一些 RSA、SF 和 DSA 文件。
一旦我排除了它们,它就起作用了!
以下是如何根据您的 jar 声明
jar {
zip64 = true
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it)
}
exclude ('META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA')
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)