[解決済み] java' コマンドは、Java プログラムをコンパイルするのですか?
質問
インターネット上のほとんどのサイトに書かれています。
<ブロッククオート
"を使用する。
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
を実行すると、許可された様々な使い方が表示されます。私のマシンでは、以下のようになります。最後の1つは、あなたが遭遇したものです。
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)
UPDATEです。
BillKさんご指摘の通り、OPも質問しています。
なぜ javac コマンドが必要なのでしょうか?
私たちが必要とする理由は
javac
を作成するためです。
.class
ファイルを作成することで、コードを現在のように作成、テスト、配布、実行、共有などできるようにすることです。の動機は
JEP 330
をより簡単にすることでした。
Java の学習の初期段階や、小さなユーティリティ・プログラムを書くとき。
他の既存の使用法を変更することなく。
関連
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
javaでクラスを作成すると、enclosing classでないように見える
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
IllegalArgumentException この例外を解決する方法
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
をインスタンス化することができません。
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Methodのinvokeメソッド実装のJavaリフレクション
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
ローカルリソースのロードが許可されていない場合の解決策