2011-08-14 27 views
5

Tôi có một tệp Java đơn giản Q.java phụ thuộc vào tệp thư viện bên ngoài X.jar. Cả Q.java và X.jar đều nằm trong cùng một thư mục. Tôi có thể biên dịch Q.java từ dòng lệnh bằng cách thực hiện: "javac -cp X.jar Q.java". Điều này tạo ra một tập tin Q.class. Làm thế nào để tôi chạy nó ngay bây giờ? Tôi đã thử tất cả những:Chạy chương trình Java từ dòng lệnh phụ thuộc vào tệp jar?

1) java Q 2) java -cp X.jar Q

tôi tiếp tục nhận được một ngoại lệ trong chủ đề "chính" java.lang.NoClassDefFoundError: Q Nguyên nhân: java .lang.ClassNotFoundException: Q

Vậy làm cách nào để chạy điều này từ dòng lệnh bây giờ tôi có tệp lớp?

+0

Có khai báo 'gói' trong Q.java không? –

+0

@TedHopp Điều đó tạo nên sự khác biệt? Tôi có một vấn đề tương tự: http://stackoverflow.com/questions/43156180/classpath-option-works-for-javac-but-not-for-java-windows –

Trả lời

10
java -cp X.jar:. Q 

Bạn phải chỉ định trong đường dẫn lớp mà bạn muốn sử dụng phụ thuộc JAR VÀ thư mục cục bộ hiện tại để giải quyết các lớp.


Sửa gợi ý trong các ý kiến:

Trên Windows, thay thế : bởi ;:

java -cp X.jar;. Q 
+4

Trong Windows, bạn phải sử dụng ";", chứ không phải ":", do đó, nó sẽ là "java -cp X.jar ;. Q" –

0

Đặt thư mục hiện hành trong classpath của bạn, nó sẽ giải quyết vấn đề. Hầu hết thời gian, chúng ta cần thư mục hiện tại trong classpath, vì vậy tôi khuyên bạn nên đặt "." (không có dấu ngoặc kép) trong biến môi trường CLASSPATH hệ thống của bạn thay vì thiết lập cho mỗi lần chạy.

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