Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Java: Không tìm thấy hoặc tải được Main Class

Khi làm việc Java, thực thi cuối cùng mã diễn ra qua các lớp đã biên dịch trước (pre-compiled classes). Khi viết lớp Java, trình biên dịch chuyển mã nguồn cấp cao (high-level source code) thành lược đồ cấp thấp (low-level scheme) gọi bytecode. Với mỗi lớp viết, một thể hiện bytecode biên dịch trước được tạo. Bytecode chứa mã cấp thấp chạy trên Java Virtual Machine. 

Tuy nhiên, đôi khi bạn gặp tình huống chạy lệnh java terminal trả về: could not find or load main class. Điều này chỉ ra vấn đề với bytecode lớp. Nhưng làm sao sửa? Hãy tìm hiểu.

'could not find or load main class' có nghĩa gì?

Lỗi could not find or load main class chỉ ra vấn đề thiết kế mã. Thường xảy ra khi chạy lệnh như sau trên terminal chạy chương trình Java:

java Test

Ở đây, "Test" là tên lớp chứa mã phải thực thi. Nếu gặp lỗi could not find or load main class, nghĩa là bytecode cho lớp Test không tìm thấy.

Cách sửa lỗi 'could not find or load main class'?

Có vài cách sửa lỗi. Dưới đây là các cách hàng đầu xác định và sửa could not find or load main class:

Kiểm tra lỗi đánh máy (Check For Typos)

Nguyên nhân đầu tiên có thể là lỗi đánh máy. Vì cú pháp gọi chương trình chỉ có hai từ khóa – "java" và tên lớp – nơi duy nhất có thể lỗi là tên lớp. Nếu lỗi đánh máy từ khóa, nhận lỗi "command not found" rõ ràng trên dòng lệnh. 

Bạn có thể kiểm tra lại tên lớp lỗi đánh máy. Thường xuyên, lỗi xuất phát từ lỗi chính tả và đánh máy ngớ ngẩn.

Giả sử viết lớp "Test" trong file "Test.java". Cách biên dịch bình thường qua dòng lệnh:

81% of participants stated they felt more confident about their tech job prospects after attending a bootcamp. Get matched to a bootcamp today.

The average bootcamp grad spent less than six months in career transition, from starting a bootcamp to finding their first job.

javac Test.java

Sau đó thực thi chạy lệnh:

java Test

Này chạy chương trình tốt. Tuy nhiên, nếu đánh sai "Test" trong lệnh, có thể gặp lỗi Could not find or load main class.

Classpath không đúng trong ứng dụng (Incorrect Classpath in Application)

Có nhiều cách classpath ứng dụng gây lỗi. Classpath (viết CLASSPATH) là biến môi trường trỏ vị trí lưu lớp người dùng (user classes) trong hệ thống. Thư mục classpath trỏ chứa nhiều lớp viết trước có thể import trực tiếp mã.

Giả sử viết lệnh import:

Import org.company.Foo;

Chạy này làm JVM tìm lớp "Foo" tại vị trí <classpath>/org/company/Foo.java. Như thấy, nếu classpath trỏ sai địa chỉ, JVM không bao giờ tìm thấy lớp bạn tìm, và ném lỗi could not find or load main class.

Đôi khi, classpath không chứa tất cả lớp hệ thống chương trình phụ thuộc. Nghĩa là có thể bạn thử bao gồm lớp từ gói chưa tải hoặc thiết lập. Trong trường hợp đó, cũng gặp lỗi này.

Lớp khai báo trong Package sai (The Class Has Been Declared In The Wrong Package)

Nếu package viết đầu file nguồn không trỏ đến package/module lớp khai báo. Hầu hết IDE tiên tiến giúp giải quyết dễ dàng bằng hiển thị lỗi trong quá trình linting. Tuy nhiên, nếu lướt qua, gây lỗi trên.

Giải pháp tốt nhất là luôn kiểm tra tên package lớp trỏ đến package đúng. Nếu dùng IDE tiên tiến như IntelliJ hoặc VSCode, bật linting cho vấn đề này.

Ví dụ, lớp sau lưu tại project/src/com/foo/bar:

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

Như thấy, package trỏ com/foo/baz trong khi lớp thực tế lưu com/foo/bar. Để sửa, cập nhật câu lệnh package trỏ đúng package:

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

Kết luận

Bài viết xem Could not find or load main class là gì trong Java, và tại sao xảy ra. Sau đó, kết thúc bằng xác định vài cách hàng đầu sửa lỗi Could not find or load main class.

Nếu muốn viết chương trình Java, lỗi này có thể xuất hiện thời gian. 

Mặc dù thông báo lỗi có vẻ đáng sợ, không quá khó giải quyết. Chỉ cần kiểm tra xem lớp bạn tìm có ở đúng vị trí hay không.