Computer >> Máy Tính >  >> Lập trình >> Java

Java:Không thể tìm hoặc tải lớp chính

Khi làm việc với Java, quá trình thực thi mã cuối cùng xảy ra thông qua các lớp được biên dịch trước. Khi bạn viết một lớp bằng Java, trình biên dịch sẽ chuyển đổi mã nguồn cấp cao của bạn thành một lược đồ cấp thấp được gọi là bytecode. Đối với mỗi lớp mà bạn viết, một phiên bản của mã bytecode được biên dịch trước sẽ được tạo. Bytecode này chứa mã cấp thấp có thể chạy trên Máy ảo Java.

Tuy nhiên, đôi khi bạn có thể gặp phải tình huống trong đó chạy lệnh java terminal trả về một cái gì đó như:could not find or load main class . Điều này cho thấy rằng có một số vấn đề với bytecode của lớp bạn. Nhưng, làm thế nào để bạn sửa chữa nó? Hãy cùng tìm hiểu.

'Không thể tìm thấy hoặc tải lớp chính' có nghĩa là gì?

Lỗi could not find or load main class chỉ ra rằng có một số vấn đề với thiết kế mã của bạn. Nó thường xảy ra khi bạn chạy một lệnh như sau trên thiết bị đầu cuối để chạy chương trình Java:

java Test

Ở đây, “Kiểm tra” là tên của lớp chứa mã của bạn phải được thực thi. Nếu bạn gặp phải could not find or load main class lỗi, có nghĩa là không thể tìm thấy mã bytecode cho lớp Kiểm tra.

Cách sửa lỗi "không thể tìm thấy hoặc tải lớp chính"?

Có một số cách để bạn có thể sửa lỗi. Dưới đây là một số cách hàng đầu để xác định và sửa lỗi could not find or load main class :

Kiểm tra lỗi chính tả

Nguyên nhân có thể xảy ra đầu tiên của lỗi này có thể là do đánh máy nhầm. Vì cú pháp của lệnh gọi chương trình chỉ bao gồm hai từ khóa - “java” và tên lớp - nơi duy nhất bạn có thể mắc lỗi là tên lớp. Nếu bạn mắc lỗi đánh máy trong từ khóa, bạn sẽ nhận được lỗi "không tìm thấy lệnh" rõ ràng trên dòng lệnh.

Bạn có thể thử kiểm tra kỹ tên lớp để tìm lỗi đánh máy. Thông thường, những lỗi như vậy bắt nguồn từ những lỗi chính tả và đánh máy ngớ ngẩn.

Giả sử bạn đã viết một lớp có tên “Kiểm tra” trong tệp “Test.java”. Đây là cách bạn thường biên dịch nó thông qua dòng lệnh:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

javac Test.java

Và sau đó bạn sẽ thực thi nó bằng cách chạy lệnh sau:

java Test

Điều này sẽ chạy chương trình của bạn tốt. Tuy nhiên, nếu bạn viết sai chính tả "Kiểm tra" trong lệnh trên, bạn có thể gặp phải Could not find or load main class lỗi.

Classpath không chính xác trong ứng dụng

Có nhiều cách mà classpath của ứng dụng có thể gây ra lỗi này. Classpath (được viết là CLASSPATH) là một biến môi trường trỏ đến vị trí lưu trữ các lớp người dùng trong hệ thống. Thư mục mà classpath trỏ tới chứa nhiều lớp viết sẵn mà bạn có thể nhập trực tiếp vào mã của mình.

Giả sử bạn đã viết lệnh nhập sau:

Import org.company.Foo;

Chạy điều này sẽ làm cho JVM tìm kiếm lớp “Foo” tại vị trí /org/company/Foo.java. Như bạn có thể thấy, nếu classpath trỏ đến địa chỉ sai, JVM sẽ không bao giờ có thể tìm thấy lớp mà bạn đang tìm kiếm và do đó ném ra could not find or load main class lỗi.

Đôi khi, đường dẫn classpath có thể không chứa tất cả các lớp hệ thống mà chương trình của bạn phụ thuộc vào. Điều này có nghĩa là có thể bạn đang cố gắng bao gồm một lớp từ một gói mà bạn chưa tải xuống hoặc chưa thiết lập. Trong trường hợp đó, bạn cũng sẽ gặp phải lỗi này.

Lớp đã được kê khai trong gói sai

Nếu gói được viết trên đầu tệp mã nguồn của bạn không trỏ đến gói / mô-đun mà lớp đó đã được khai báo. Hầu hết các IDE có thể giúp bạn tìm ra điều này rất dễ dàng bằng cách hiển thị lỗi trong quá trình in linting. Tuy nhiên, nếu nó bị trượt mắt sẽ gây ra lỗi trên.

Giải pháp tốt nhất cho vấn đề này là luôn kiểm tra xem tên gói của một lớp có trỏ đến gói chính xác hay không. Nếu bạn sử dụng IDE nâng cao như IntelliJ hoặc VSCode, hãy đảm bảo bật linting cho vấn đề này.

Ví dụ:lấy ví dụ về lớp sau được lưu trữ tại project / src / com / foo / bar:

package com.foo.baz;
class Bar {
  // Some code here
}

Như bạn có thể thấy, gói trỏ tới com / foo / baz trong khi lớp thực sự được lưu trữ trong com / foo / bar. Để khắc phục điều này, bạn cần cập nhật câu lệnh gói để trỏ đến gói phù hợp:

package com.foo.bar;
class Bar {
  // Some code here
}

Kết luận

Trong bài viết này, chúng tôi đã xem xét những gì Could not find or load main class trong Java và tại sao nó xảy ra. Sau đó, chúng tôi kết thúc cuộc thảo luận của mình bằng cách xác định một số cách hàng đầu để sửa lỗi Could not find or load main class lỗi.

Nếu bạn đang tìm cách viết chương trình bằng Java, thỉnh thoảng lỗi này có thể xuất hiện.

Mặc dù thông báo lỗi có vẻ khá đáng sợ, nhưng nó không quá khó để giải quyết. Tất cả những gì bạn cần làm là kiểm tra xem lớp học bạn đang tìm có ở đúng vị trí hay không.