1

Ich benutze Webmaster-Tool Java API V3, um Daten abzufragen, mein Code funktioniert gut in Eclipse, aber wenn ich es in ein Jar exportieren ich erhalte den Fehler unterJava Jar -java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport von

Exception in thread "main" java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport 
    at java.lang.J9VMInternals.prepareClassImpl(Native Method) 
    at java.lang.J9VMInternals.prepare(J9VMInternals.java:430) 
    at java.lang.Class.getMethod(Class.java:1061) 
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:506) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:498) 
Caused by: java.lang.ClassNotFoundException: com.google.api.client.http.HttpTransport 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:665) 
     at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:942) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:851) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:82 

meine dependecies als

enter image description here

enter image description here

folgen ich bin kompilieren und exportieren die jar in Java6 und Ausführen mit Java7.

Ich nehme an, es ist ein Abhängigkeitsproblem, aber ich weiß nicht, wie es zu lösen ist ?? vor allem funktioniert es in Eclipse, aber wenn ich das Glas aus Eclipse exportiere, die Standardkonfiguration behalten und die Hauptklasse auswähle, bekomme ich NoClassDefFoundError, irgendwelche Ideen danken Ihnen im Voraus.

Antwort

1

Sie werden diese Fehlermeldung erhalten, wenn Klasse com.google.api.client.http.HttpTransport IS während der Kompilierung zur Verfügung, sondern NICHT zur Laufzeit zur Verfügung.

Eclipse-fügt automatisch die JAR-Dateien auf dem Build Classpath Ihre Laufzeit Classpath Konfiguration. Daher erhalten Sie die Ausnahme nicht, wenn Sie von Eclipse aus arbeiten.

Ich nehme an, Sie bilden die Befehlszeile wie folgt ausgeführt werden: java -cp myjarfile.jar com.my.Main

Wenn dies der Fall ist, wird die Classpath fehlt die Abhängigkeiten wie in Eclipse konfiguriert. Um dies zu lösen, hängen Sie sie wie folgt an:

Beachten Sie, dass das Semikolon ; im Klassenpfad für Windows ist. Verwenden Sie einen Doppelpunkt : unter Linux.

aktualisiert Wenn eine lauffähiges JAR-Datei verwenden, stellen Sie sicher, dass Ihr Klassenpfad korrekt in der Manifest-Datei festgelegt wird.

https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

+0

aber ich habe alle Gläser zum Klassenpfad hinzugefügt –

+0

Bitte zeigen Sie, wie. Kopieren Sie die Befehlszeile, die Sie verwenden, um die Anwendung zu starten, z. java -cp ... so können wir besseres Feedback geben – Niels

+0

es ist gelöst, ich habe nur ein lauffähiges Glas aus Eclipse exportiert dann ausgeführt es mit Java-jar majar.jar –

0

i löste das Problem, indem sie runnable Jar von Eclipse statt Jar exportieren.