2015-10-02 11 views
6

Sto utilizzando IntelliJ Idea. Ho creato la mia applicazione e l'ho creata come file .jar. Questo programma utilizza un file esterno .jar per il suo driver di database.ClassNotFoundException quando si utilizza un jar esterno

Quando eseguo il programma dall'IDE, funziona correttamente. Quando si tenta di eseguire il mio file .jar al di fuori del IDE, riporta la seguente eccezione:

Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerException 
     at ca.vdts.dbupdate.Main.main(Main.java:10) 
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerException 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     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) 

La directory del file sqljdbc42.jar è nel manifesto. Sono su Windows e mi piacerebbe eseguirlo facendo clic sul file '.jar'. Il file .jar dell'applicazione ei file sqljdbc42.jar si trovano entrambi nella stessa directory. Sulla riga di comando, l'esecuzione di ...

C:\Users\admin\IdeaProjects\DBUpdate\out\artifacts\DBUpdate>java -classpath .\sqljdbc42.jar;DBUpdate.jar -jar DBUpdate.jar 

... provoca lo stesso errore:

Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerException 
     at ca.vdts.dbupdate.Main.main(Main.java:10) 
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerException 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     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 
+1

Quale comando è stato eseguito sulla riga di comando? Dove si trova 'sqljdbc42.jar' nel filesystem? – Tunaki

+1

quando si esegue il programma in IDE, IDE aggiunge questo jar al 'classpath', ma quando si esegue questo programma da soli non lo si fa, quindi si ottiene il messaggio di errore. Aggiungi questo file jar del driver al classpath, quando avvii il programma. –

risposta

3

Provare a eseguire l'applicazione con:

java -classpath sqljdbc42.jar:Application.jar -jar Application.jar 

Sostituire la : con un ; sotto Windows.

Problemi correlati