Tôi đang sử dụng IntelliJ Idea
. Tôi đã xây dựng ứng dụng của mình và tạo ứng dụng dưới dạng tệp .jar
. Chương trình này sử dụng tệp bên ngoài .jar
cho trình điều khiển cơ sở dữ liệu của nó.ClassNotFoundException khi sử dụng bình bên ngoài
Khi tôi chạy chương trình từ IDE, nó hoạt động tốt. Khi tôi cố gắng chạy tập tin .jar
của tôi bên ngoài của IDE, nó báo cáo ngoại lệ sau đây:
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)
Thư mục của tập tin sqljdbc42.jar
là trong biểu hiện. Tôi đang sử dụng Windows và tôi muốn chạy điều này bằng cách nhấp vào tệp '.jar'. Tệp .jar của ứng dụng và các tệp sqljdbc42.jar đều nằm trong cùng một thư mục. Trên dòng lệnh, thực hiện ...
C:\Users\admin\IdeaProjects\DBUpdate\out\artifacts\DBUpdate>java -classpath .\sqljdbc42.jar;DBUpdate.jar -jar DBUpdate.jar
... kết quả trong những lỗi tương tự:
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
Bạn đã chạy lệnh nào trên dòng lệnh? 'Sqljdbc42.jar' nằm ở đâu trong hệ thống tập tin? – Tunaki
khi bạn chạy chương trình của bạn trong IDE, IDE thêm jar này vào 'classpath', nhưng khi bạn chạy chương trình này một mình bạn không làm điều đó, vì vậy bạn nhận được thông báo lỗi. Thêm tệp jar trình điều khiển này vào đường dẫn lớp, khi bạn khởi động chương trình của mình. –