我正在开发一个gradle项目,我想编译我拥有的项目,以在我的IDE Netbeans 8.2之外对其进行测试,在该项目中它可以正常工作。
当我尝试使用通常的java -jar
命令运行程序时,它最初可以正常工作,直到程序遇到可以抛出JDOMException的类为止。然后我得到标题中描述的错误,然后是ClassNotFoundException。
在Netbeans中,JDOMException.class
下包含Dependencies>Compile for main>jdom2-2.0.6.jar>org.jdom2
build.gradle
脚本显示为:
apply plugin: 'java'
sourceCompatibility = 1.8
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
if (!hasProperty('mainClass')) {
ext.mainClass = 'bikesys.hda.BikeSys'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.10'
compile files('libs/jcalendar-1.4.jar')
compile group: 'org.jdom', name: 'jdom2', version: '2.0.6'
compile ("com.byteowls:jopencage:1.2.0")
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.0.1'
compile group: 'org.slf4j', name:'slf4j-api', version: '1.7.2'
compile group: 'ch.qos.logback', name:'logback-classic', version: '1.0.9'
compile group: 'ch.qos.logback', name:'logback-core', version: '1.0.9'
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.6'
compile group: 'org.json', name: 'json', version: '20180813'
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
compile group: 'log4j', name: 'log4j', version: '1.2.17'
compile group: 'me.atlis', name: 'atlis-location-base', version: '1.0.0'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.8.1'
compile group: 'me.atlis', name: 'nominatim-api', version: '1.0.0'
}
jar {
manifest {
attributes(
'Main-Class': 'bikesys.hda.BikeSys'
)
}
}
我在Netbeans中使用Java JDK 1.8.0_202,并在JRE 1.8.0_211-B12中将其作为运行时环境。我已经找到了“必须将jdom2添加到运行时环境”的答案,但是我既不知道如何做到这一点,也不知道这是否是解决问题的一般方法。
编辑:我已经看到了链接在一起的“重复问题”,但是我只是看到了有关导致NoClassDefFound异常的原因的解释,而不是真正的解决方法。