Cấu trúc thư mục của tôi trông giống như thế này.JVM không thể tìm thấy lớp của tôi: java.lang.NoClassDefFoundError
PackagesUnit3/com/myname/start/PackagesTest.java
(lớp này chứa chính và báo cáo kết quả nhập khẩu "nhập khẩu com.systems.mui của tôi. *;)
PackagesUnit3/com/hệ thống /mui/Test.java
(lớp này chứa các câu lệnh package "gói com.systems.mui;")
với PackageUnit3 như thư mục cơ sở của tôi, tôi có thể biên dịch thành công cả hai lớp với tuyên bố
"javac com/myname/start/PackagesTest.java"
Tuy nhiên tôi không thể chạy mã với lệnh
"java com.myname.start.PackagesTest"
Error: "Exception in thread "main" java.lang.NoClassDefFoundError: com/myname/start/PackagesTest (wrong name: PackagesTest)"
Các trình biên dịch tạo thành công .class
file cho mỗi lớp học java và đặt chúng trong cùng một vị trí như các tập tin nguồn.
Theo Horstmann, "Java lõi" phiên bản thứ 9. p. 186, Cú pháp lệnh "java" của tôi phải hoạt động.
Tôi không cần phải chỉ định thư mục hiện tại (".") Vì tôi không sử dụng tùy chọn classpath (-cp).
Một lưu ý: Tôi đã sử dụng lệnh "SUBST R:" để thiết lập thư mục PackagesUnit3 làm thư mục cơ sở. Dòng lệnh thực tế của tôi trông giống như R:>
Bất kỳ đề xuất nào ??
+1 vì tiêu đề câu hỏi của bạn làm tôi cười. :) –
'java com.myname.start.Packages.test' - đó có phải là lỗi đánh máy không? Vì tên lớp của bạn là 'PackagesTest'. –
Tôi đề nghị bạn sửa dòng lệnh của mình. Nếu lớp PackageTest của bạn có phương thức main(), dòng lệnh của bạn phải là java com.myname.start.PackagesTest. – Olaf