เว็บไซต์ส่วนใหญ่บนอินเทอร์เน็ตพูดว่า:
"ใช้
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