インターネット上のほとんどのウェブサイトは言う:
"
javacコマンドを使用して.javaファイルをコンパイルします。次に、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コマンドはそれをJVMのClassLoader内にロードします。