Hầu hết các trang web trên internet đều nói:
"sử dụng
javac
lệnh để biên dịch một.java
tập tin. Sau đó chạy nó bằngjava
lệnh"
Nhưng hôm nay tôi đã cố gắng chạy một chương trình java mà không có javac
và tôi đã nhận được một kết quả lạ.
Dưới đây là nội dung của một tệp có tên hello.java
:
public class Myclass {
public static void main(String[] args){
System.out.println("hello world");
}
}
Rồi tôi chạy:
$ javac hello.java
Điều này cho tôi lỗi này:
hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java
public class Myclass {
^
1 error
Nhưng khi tôi chạy nó mà không có javac
lệnh, nó đã thực thi mà không có bất kỳ lỗi nào.
$ java hello.java
hello world
Liệu java
lệnh cũng biên dịch chương trình? Nếu có, tại sao chúng ta cần javac
lệnh?
Phiên bản java của tôi là:
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode)
Myclass.java
và sau đó từ dòng lệnh biên dịch nó như thế này javac Myclass.java
và sau đó chạy nó như thế này java Myclass
.
javac
biên dịch nguồn Java thành mã byte được giải thích cụ thể của JVM và java
lệnh sẽ tải nó bên trong ClassLoader của JVM.