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
Quale comando è stato eseguito sulla riga di comando? Dove si trova 'sqljdbc42.jar' nel filesystem? – Tunaki
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. –