เว็บไซต์ส่วนใหญ่บนอินเทอร์เน็ตพูดว่า:
"ใช้
javac
คำสั่งเพื่อรวบรวม.java
ไฟล์จากนั้นเรียกใช้โดยใช้java
คำสั่ง"
แต่วันนี้ฉันพยายามรันโปรแกรมจาวาโดยไม่ใช้javac
และฉันได้ผลลัพธ์ที่แปลก
นี่คือเนื้อหาของไฟล์ที่เรียกว่าhello.java
:
public class Myclass {
public static void main(String[] args){
System.out.println("hello world");
}
}
จากนั้นฉันก็วิ่ง:
$ javac hello.java
ซึ่งทำให้ฉันข้อผิดพลาดนี้:
hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java
public class Myclass {
^
1 error
แต่เมื่อฉันรันโดยไม่มีjavac
คำสั่งมันจะทำงานโดยไม่มีข้อผิดพลาด
$ java hello.java
hello world
ที่ไม่java
คำสั่งนอกจากนี้ยังรวบรวมโปรแกรมได้หรือไม่ ถ้าใช่ทำไมเราต้องมีjavac
คำสั่ง?
เวอร์ชันของ java ของฉันคือ:
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
แล้วจากบรรทัดคำสั่งรวบรวมไว้เช่นนี้แล้วเรียกมันเช่นนี้javac Myclass.java
java Myclass
javac
รวบรวมแหล่งที่มาของ Java ลงในไบต์ที่แปลโดย JVM และjava
คำสั่งจะโหลดมันใน ClassLoader ของ JVM