2015-10-02 16 views
6

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 
+1

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

+1

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. –

Trả lời

3

Thử chạy ứng dụng của bạn với:

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

Thay : với một ; trong Windows.

Các vấn đề liên quan