Không thể Tìm hoặc Tải Java Lớp Chính? Đây là cách khắc phục!

Không thể Tìm hoặc Tải Java Lớp Chính? Đây là cách khắc phục!

Nếu bạn liên tục nhận được lỗi không tìm thấy lớp chính trong dự án Java của mình mà không có lý do rõ ràng, đừng lo lắng, bạn không đơn độc.





Là một trong những lỗi tự phát và không thể lường trước được nhất, nhờ xu hướng của JVM (Máy ảo Java) dính vào một đường dẫn classpath mặc định, vấn đề 'không tìm thấy lớp chính' là điều ám ảnh cả những người nghiệp dư và chuyên nghiệp.





Nhưng vấn đề này thực sự ít đáng sợ hơn nó có vẻ. Đọc tiếp để tìm hiểu cách bạn có thể loại bỏ lỗi này một lần và mãi mãi.





Tại sao lớp chính không được tìm thấy?

Trước khi cố gắng hiểu cách thức và lý do tại sao JVM không thể tìm thấy lớp chính, chúng ta cần hiểu khái niệm về Classpath trong Java.

Classpath là gì?

Classpath là đường dẫn tệp mà môi trường thời gian chạy Java tìm kiếm các lớp và các tệp tài nguyên khác. Nó có thể được thiết lập bằng cách sử dụng -classpath tùy chọn khi thực hiện một chương trình hoặc bằng cách thiết lập hệ thống CLASSPATH biến môi trường.



Như tên cho thấy, nó chỉ đơn giản là một đường dẫn tệp trong đó .lớp các tệp có thể được tìm thấy trong một gói hoặc thư mục JDK.

Khi JVM không thể định vị lớp chính, thường là do nó đang tìm kiếm .lớp tệp trong classpath sai. Tất nhiên, cách để khắc phục vấn đề này là chỉ định thủ công đường dẫn classpath bằng cách sử dụng các gói hoặc chỉ định classpath.





Tại thời điểm này, nếu bạn muốn làm mới bộ nhớ của mình về các lớp Java, hãy xem hướng dẫn của chúng tôi về tạo các lớp trong Java .

bạn có thể chơi trò chơi ps2 trên máy tính không

Sử dụng các gói

Hãy tạo một lớp có tên Thử nghiệm . Đặt nó trong một gói có tên là testPackage . Các gói được sử dụng trong Java để nhóm các lớp tương tự lại với nhau hoặc cung cấp một không gian tên duy nhất cho các lớp.





Trong ví dụ đơn giản này, việc sử dụng một gói sẽ giúp bạn hình dung cách thức hoạt động của Java’s classpath. Trong ứng dụng trình quản lý tệp của bạn, một gói được biểu thị dưới dạng một thư mục độc lập.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Bây giờ, hãy mở một thiết bị đầu cuối mới và đảm bảo rằng thư mục làm việc của bạn giống với thư mục chứa thư mục gói. Bạn có thể thay đổi thư mục làm việc bằng cách sử dụng đĩa CD lệnh trên bất kỳ hệ điều hành nào.

Biên dịch Test.java bằng cách chạy lệnh sau:

package testPackage;
javac testPackage/Test.java

Thao tác này sẽ lưu tệp nhị phân đã biên dịch (tệp .class) trong testPackage.

Để chạy lớp đã biên dịch, bạn cần nhập tên lớp đủ điều kiện vào dòng lệnh. Tên đủ điều kiện của lớp Java đề cập đến tên của nó có tiền tố là tên gói của nó. Trong trường hợp này, nó sẽ trông giống như sau:

java testPackage.Test

Cách gọi tệp lớp này cũng đảm bảo rằng bạn có thể gọi tệp thực thi từ các gói khác nhau từ cùng một thư mục làm việc. Tất cả những gì bạn phải làm là sửa đổi tên lớp đủ điều kiện.

Trong các triển khai nâng cao hơn, chúng tôi khuyên bạn nên tạo các thư mục con riêng biệt cho các lớp và tệp nguồn của mình để quản lý tốt hơn các tệp trong gói.

Chỉ định Classpath theo cách thủ công

Cách được đề xuất để quản lý các tệp java của bạn là tạo các thư mục riêng biệt cho các tệp và lớp nguồn. Nếu bạn đang thực hiện một dự án, có khả năng là bạn đang làm việc này.

Thông thường, thư mục có tệp nguồn được gắn nhãn là src và tệp có tệp .class được gắn nhãn là các lớp học. Đây cũng là một cách để đảm bảo rằng khả năng JVM không tìm thấy lớp chính được giảm đáng kể, do thư mục có cấu trúc đúng.

Nếu chúng ta sử dụng phương pháp này, đây là cấu trúc thư mục sẽ trông như thế nào trước khi biên dịch:

vt-x được bật nhưng không hoạt động
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Mỗi thụt lề trong hình minh họa ở trên tương ứng với một cấp của cấu trúc phân cấp tệp mà dự án của bạn phải tuân theo.

Để biên dịch, hãy đảm bảo rằng thư mục làm việc của bạn là myFolder. Bây giờ, gõ lệnh sau:

javac -d classes src/testPackage/Test.java

Các .lớp có thể thực thi nên được lưu trong myFolder / class / testPackage . Theo đó, cấu trúc thư mục tệp trông giống như sau:

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Để chạy .lớp , chạy lệnh Java với tên lớp đủ điều kiện và chỉ định đường dẫn cục bộ. Mọi đường dẫn được khai báo liên quan đến thư mục làm việc, trong trường hợp này là myFolder.

java -classpath classes testPackage

Chạy lệnh này sẽ cung cấp cho bạn đầu ra mong muốn. Nhưng, tại sao cần phải tổ chức lại rất nhiều để giải quyết một lỗi đơn giản?

Tầm quan trọng của việc tổ chức tệp trong Java

Chính lý do tại sao 'Không thể tìm thấy hoặc tải lớp chính' được ném ra là vì JVM không thể tìm thấy .lớp các tệp đã được lưu trữ.

Cách dễ nhất để giải quyết lỗi này là kiểm soát nơi các tệp .class được lưu trữ và thông báo rõ ràng cho JVM xem ở đó. Điều này có thể thực hiện được bằng cách tổ chức các tệp nguồn và tệp thực thi của bạn một cách riêng biệt và kiểm soát mọi thứ từ một thư mục đang hoạt động.

Khi bạn bắt đầu thêm các cấu trúc, chẳng hạn như di sản đối với dự án của bạn, độ phức tạp của hệ thống tệp chắc chắn sẽ tăng lên. Trong các dự án như vậy hoặc ngay cả những dự án yêu cầu sử dụng tệp JAR hoặc thư viện tùy chỉnh, thực hành đơn giản về tách riêng và quản lý tệp có thể giúp bạn tiết kiệm vô số giờ khắc phục sự cố và gỡ lỗi.

Để đọc thêm về cách classpath hoạt động trong Java và nhiều thứ bạn có thể kiểm soát khi chạy mã của mình, bạn cũng có thể xem qua Oracle’s tài liệu tham khảo chi tiết và thân thiện với người dùng .

Đăng lại Đăng lại tiếng riu ríu E-mail 10 dự án mới bắt đầu tốt nhất cho lập trình viên mới

Muốn học lập trình nhưng không biết bắt đầu từ đâu? Các dự án và hướng dẫn lập trình dành cho người mới bắt đầu này sẽ giúp bạn bắt đầu.

cách khắc phục vết xước trên cd
Đọc tiếp Chủ đề liên quan
  • Lập trình
  • Java
Giới thiệu về tác giả Yash Chellani(10 bài báo đã xuất bản)

Yash là một sinh viên khoa học máy tính đầy tham vọng, thích xây dựng mọi thứ và viết về mọi thứ công nghệ. Khi rảnh rỗi, anh ấy thích chơi Squash, đọc bản sao của Murakami mới nhất và săn rồng trong Skyrim.

Xem thêm từ Yash Chellani

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký