Nic*_*oft 0 java scala jar build gradle
经过大量研究,我似乎无法弄清楚使用Gradle生成可运行的Scala jar文件时遇到的问题。我重写了'jar'Gradle任务,以创建一个从我的主类文件开始执行的jar文件(包括依赖项)。但是,无论何时运行它,无论我对Main-Class属性使用什么功能,控制台都会引发“找不到或加载主类”错误。这是我到目前为止的内容:
build.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) }
}
}
Run Code Online (Sandbox Code Playgroud)
src / main / scala / com / test / Main.scala
package com.test
object Main {
def main(args: Array[String]): Unit = {
print("Hello world");
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,当我运行“ 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')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2290 次 |
| 最近记录: |