2016-05-11 8 views
5

Hallo habe ich jetzt für ein wenig damit zu tun und ich war nicht in der Lage etwas reparieren.java NoClassDefFoundError: com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver, wenn ich jar, aber nicht auf IDE

Also habe ich eine einfache Java-Anwendung, die die Google Kalender-API verwendet, um Ereignisse daraus zu erhalten.

Wenn ich es auf dem IDE ausführen (IntelliJ) funktioniert es ohne Fehler, aber wenn ich die die JAR von der Kommandozeile ich diesen Fehler erstellen und auszuführen:

Exception in thread "main" java.lang.NoClassDefFoundError: 
      com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver 
    at info.cantu.smartmirror.Main.main(Main.java:44) 
Caused by: java.lang.ClassNotFoundException: 
      com.google.api.client.extensions.java6.auth.oauth2.VerificationCodeReceiver 
    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) 
    ... 1 more 

ich die benötigten Bibliotheken importiert mit Maven. Ich denke, ich baue das Glas falsch.

Hier ist meine MANIFEST.MF:

Manifest-Version: 1.0 
Main-Class: info.cantu.smartmirror.Main 

Hier ist, was Panel sieht meine Artefakte ist wie:

Here is what my Artifacts panel looks like:

Irgendwelche Ideen?

+0

unten gezeigt Wenn Sie von der Kommandozeile Prüfung durchführen, wenn die alle erforderlichen Abhängigkeiten Gläser in dem Klassenpfad verfügbar sind –

+0

Wie ich das tun? @ ThusithaThilinaDayaratne –

+0

In Ihrem Code, irgendwo in der Nähe des Anfanges des Codes, setzen Sie System.out.println ("Classpath [" + System.getProperty ("java.class.path") + "]"). Dann in der Befehlszeile, java -cp my-jar.jar; meine-oauth.jar; andere-jar.jar; etc ... org.main.ClassName – lincolnadym

Antwort

1

Okey ich fand es heraus. Ich habe zwei Dinge getan:

Nummer 1: Ich habe den google-oauth-client-jetty: 1.20.0 aus dem Projekt entfernt, indem ich auf Project Structure -> Libraries -> gehe (auswähle) -> klicke auf den Minus-Button .

Dann habe ich die neue Version der Bibliothek (1.22) this link has the latest version number hinzugefügt. Ich fügte es durch maven durch (im selben Fenster wie vorher) klickend auf die Plus-Taste -> Aus Maven und suche danach

Es schien jedoch nicht zu funktionieren.

Number 2 (Ich denke, das den Trick):

In Projektstruktur -> Artifacts -> Die JAR-I zu bauen versuchen -> habe ich die Bibliothek mit dem Thema auf der rechts. Anstatt jedoch doppelt darauf zu klicken, wird die Bibliothek einfach in den Ausgabe-Stammordner eingefügt. Ich habe mit der rechten Maustaste geklickt und "In Output Root extrahieren" ausgewählt, wodurch alle in der Bibliothek enthaltenen einzelnen Dateien extrahiert und zum Ausgabe-Root hinzugefügt wurden.

Als