Ich versuche, ein Glas mit Abhängigkeiten zu laufen. Die Anwendung läuft gut in IntelliJ, aber wenn ich versuche, das Glas zu laufen bekomme ich:NoClassDefFoundError in jar aber nicht in Intellij
>> java -jar test-0.1.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/atlassian/httpclient/apache/httpcomponents/DefaultHttpClient
at com.atlassian.jira.rest.client.internal.async.AsynchronousHttpClientFactory.createClient(AsynchronousHttpClientFactory.java:53)
at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.create(AsynchronousJiraRestClientFactory.java:35)
at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.createWithBasicHttpAuthentication(AsynchronousJiraRestClientFactory.java:42)
at Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: com.atlassian.httpclient.apache.httpcomponents.DefaultHttpClient
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
Mein build.gradle sieht wie folgt aus:
group 'test'
version '1.0-SNAPSHOT'
task wrapper(type: Wrapper) {
gradleVersion = '2.9'
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'application'
sourceCompatibility = 1.8
mainClassName = "Main"
repositories {
mavenCentral()
maven {
url 'https://maven.atlassian.com/content/repositories/atlassian-public/'
}
}
jar {
baseName = 'test'
version = '0.1.0'
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
}
manifest {
attributes 'Main-Class': 'Main'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'com.atlassian.jira:jira-rest-java-client-parent:4.0.0'
compile 'com.atlassian.jira:jira-rest-java-client-core:4.0.0'
compile 'com.atlassian.jira:jira-rest-java-client-api:4.0.0'
compile 'com.atlassian.jira:jira-rest-java-client-plugin:3.0.0'
compile 'com.atlassian.fugue:fugue-parent:2.6.1'
compile 'com.atlassian.fugue:fugue:2.6.1'
}
Ich habe auch versucht transitive=true
zu jedem kompilieren Klausel hinzugefügt umsonst.
Hallo, vielen Dank. Können Sie ein konkretes Beispiel geben? Jetzt mache ich 'java -jar test-0.1.0.jar'. Sollte es 'Java-Klassenpfad sein. -jar build \ libs \ test-0.1.0.jar'? –
Ja, wenn alle Abhängigkeiten in demselben Ordner sind. –
Tut mir leid, es funktioniert nicht. –