インターネット上のほとんどのウェブサイトは言う:
"
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内にロードします。