2016-05-11 4 views
5

Ciao Ho avuto a che fare con questo per un po 'ora e non sono stato in grado per risolverlo.java NoClassDefFoundError: com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver quando eseguo jar ma non su IDE

Quindi ho una semplice applicazione Java che utilizza l'API di Google Calendar per ottenere eventi da esso.

Quando eseguo sul IDE (IntelliJ) funziona senza errori, ma quando ho compilare ed eseguire il JAR dalla riga di comando ottengo questo errore:

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 

ho importato le librerie richieste utilizzando Maven. Penso che stia costruendo il barattolo sbagliato.

Ecco la mia MANIFEST.MF:

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

Ecco ciò che il mio pannello di Artefatti assomiglia:

Here is what my Artifacts panel looks like:

Tutte le idee?

+0

Quando si esegue dalla riga di comando di controllo se i tutti i barattoli di dipendenza richieste sono disponibili nel percorso di classe –

+0

Come posso fare? @ThusithaThilinaDayaratne –

+0

Nel tuo codice, da qualche parte vicino all'inizio del codice, inserisci System.out.println ("Classpath [" + System.getProperty ("java.class.path") + "]"). Quindi sulla riga di comando, java -cp my-jar.jar; my-oauth.jar; other-jar.jar; ecc ... org.main.ClassName – lincolnadym

risposta

1

Okey L'ho capito. Ho fatto due cose:

Numero 1: Ho rimosso il google-oauth-client-jetty: 1.20.0 dal progetto andando in Struttura del progetto -> Librerie -> (selezionandolo) -> facendo clic sul pulsante meno .

Quindi ho aggiunto la nuova versione della libreria (1.22) this link has the latest version number. L'ho aggiunto tramite Maven da (nella stessa finestra di prima) facendo clic sul pulsante più -> Da Maven e cercandolo

Tuttavia non sembra funzionare.

Numero 2 (credo che questo ha fatto il trucco):

In Project Structure -> Artefatti -> Il vaso che stavo cercando di costruire -> Ho selezionato biblioteca la questione sulla destra. Tuttavia, invece di fare doppio clic su di esso che colloca semplicemente la libreria nella radice di output. Ho fatto clic con il tasto destro del mouse e selezionato "Extract Into Output Root" che ha estratto tutti i singoli jar inclusi nella libreria e li ha aggiunti alla radice di output.

Come mostrato di seguito

Problemi correlati