インターネットと言うのほとんどのウェブサイト:
「使う
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)
Javaの11の前に、あなたが最初にそれをコンパイルする必要があり、あなたのコードを実行するために、あなたはそれを実行することができます。ここでは例を示します。
javac test.java
java test
Javaの11以来、あなたはまだやることができますjavac
+ java
、またはあなたが実行することができますjava
コンパイルし、それ自体で、あなたのコードを自動実行します。何のことに注意してください.class
ファイルが生成されません。ここでは例を示します。
java test.java
あなたが実行した場合java -help
、あなたは様々な用途許可が表示されます。ここでは、それは私のマシン上で次のようになります。最後のものは、あなたがに走ったものです:java [options] <sourcefile> [args]
「単一のソースファイルのプログラムを実行する」であろう。
$ java -help
Usage: java [options] <mainclass> [args...]
(to execute a class)
or java [options] -jar <jarfile> [args...]
(to execute a jar file)
or java [options] -m <module>[/<mainclass>] [args...]
java [options] --module <module>[/<mainclass>] [args...]
(to execute the main class in a module)
or java [options] <sourcefile> [args]
(to execute a single source-file program)
更新:
@BillKで指摘したように、OPも尋ねました:
なぜ我々は、javacコマンドが必要なのでしょうか?
私たちが必要とする理由は、javac
作成することです。.class
それが今日であるようにそのコードがなど、作成したテスト、分散、実行、共有することができるので、ファイルを。動機JEP 330は、それが簡単のために作ることだった「は、Javaを学習の初期段階、および小さなユーティリティプログラムを書くときに、」他の既存の用途を変更せずに。