【发布时间】:2018-06-12 18:23:10
【问题描述】:
我正在使用gradle 将一些java 代码打包到一个jar 中。我正在使用来自tools.jar 的一些类。我在gradle 构建它并制作了一个罐子方面取得了成功,但是当我使用java -jar <package>.jar 运行该罐子时,我得到了以下信息
java.lang.NoClassDefFoundError: com/sun/tools/attach/VirtualMachine.
因为tools.jar 是jdk,而不是jre。有没有办法可以将 tools.jar 与我的 package.jar 捆绑在一起,让我的 jar 可以在任何地方工作?
到目前为止,这是我的build.gradle。
buildscript {
repositories {
maven {
url 'https://plugins.gradle.org/m2/'
}
}
}
description = "A java program"
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
flatDir {
dirs System.properties['java.home'] + '/../lib'
}
}
jar {
archiveName = "jProg.jar"
manifest {
attributes(
'Dependencies': 'com.sun.tools'
)
}
}
dependencies {
compile group: 'com.sun', name: 'tools'
}
【问题讨论】:
-
可能你需要的叫做'fat jar'(Gradle 将所有依赖项打包到单个 jar 中)
-
@MaxFarsikov 你能把它作为答案。我会接受的。