Ok Tôi biết câu hỏi này đã được hỏi rất nhiều lần trước đây, nhưng tôi đã googled nó và xem xét các ví dụ và xem các câu hỏi trên SO trong tháng qua, và tôi nghiêm túc không thể làm được điều này. Tôi nghĩ rằng vấn đề là tôi muốn có thể chạy chương trình từ cả Eclipse và dòng lệnh. Tôi cũng đang sử dụng OSX và tôi nghĩ rằng rất nhiều ví dụ tôi đang đọc là dành cho Windows/Linux.Thêm jar vào classpath khi chạy từ dòng lệnh
Nếu tôi có một chương trình đơn giản được biên soạn trong Eclipse mà tôi muốn chạy từ dòng lệnh tôi làm điều này:
java -cp bin MyProgram
Tôi đã một chương trình khác tôi biên dịch và chạy trong Eclipse, và điều này tham chiếu JDBC MySQL trình kết nối (mysql-connector-java-5.1.19-bin.jar) được lưu trữ trong cùng một thư mục. Điều này làm việc tốt từ Eclipse, nhưng tôi không thể chạy nó từ dòng lệnh.
Tôi đã thử tất cả các kết hợp của sự vật ...
java -classpath "bin;mysql-connector-java-5.1.19-bin.jar" MyProgram
java -cp bin\;mysql-connector-java-5.1.19-bin.jar MyProgram
và nhận được tất cả các loại lỗi lớp không tìm thấy ...
Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram
Caused by: java.lang.ClassNotFoundException: MyProgram
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Hi Matt, nếu tôi không nhầm tôi nghĩ classpath là để khai báo đường dẫn đến những lớp học chính bạn muốn thực hiện. Vì vậy, trong trường hợp này nếu lớp của bạn nằm trong thư mục bin tôi sẽ thử: java MyProgram hoặc java -cp myprogrampath MyProgram –
@FedericoGiust Không cụ thể; classpath chỉ định nghĩa một kho lưu trữ hoặc một đường dẫn đến một tập các lớp. Đường dẫn lớp có thể có hoặc không bao gồm lớp runnable (thường dẫn đến lỗi ngoại lệ hoặc lỗi java.exe). Classpath có thể bao gồm các thư mục và lưu trữ không có các lớp runnable. – Qix
có thể trùng lặp của [dòng lệnh Java có bên ngoài .jar] (http://stackoverflow.com/questions/6069702/java-command-line-with-external-jar) –