Windows でコマンドラインから .class ファイルを実行するにはどうすればいいですか? 質問する

Windows でコマンドラインから .class ファイルを実行するにはどうすればいいですか? 質問する

コマンドラインから .class ファイルを実行しようとしています。保存されているディレクトリに手動で移動すると動作しますが、次のようにすると:

java C:\Peter\Michael\Lazarus\Main

メインクラスが見つからないと表示されます。.jar ファイルを作成する以外に、これに対する解決策はありますか (.jar が最善の解決策であることはわかっていますが、現時点では探しているものではありません)?

ベストアンサー1

Java アプリケーション ランチャー(別名java.exeまたは単にjava) は、起動するものを指定するための最大 4 つの異なる方法をサポートしています (使用する Java バージョンによって異なります)。

  1. 指定するクラス名最も基本的な方法です。クラス名は、ファイル名

     java -cp path/to/classFiles/ mypackage.Main
    

    ここでクラスを開始しmypackage.Main-cpスイッチを使用して、クラスを見つけるために使用されるクラスパスを指定します (クラスへの完全なパスはmypackage.Mainになりますpath/to/classFiles/mypackage/Main.class)。

  2. jar ファイルを起動しています。

    java -jar myJar.jar
    

    これにより、jar自体とそのClass-Pathエントリで指定されたすべてのものがクラスパスに配置され、エントリで指定されたクラスが起動されますMain-Class。この場合、できない追加のクラスパスエントリを指定します (これらは黙って無視されます)。

  3. Java 9 ではモジュールが導入され、オプション 2 の動作と同様の方法で特定のモジュールを起動する方法が導入されました (モジュール専用のメイン クラスを起動するか、そのモジュール内でユーザー指定のクラスを起動するかのいずれか)。

    java --module my.module
    
  4. Java 11では以下のサポートが導入されました単一ファイルソースコードプログラムこれにより、単一のソース ファイルに収まる Java プログラムの実行が非常に簡単になります。コンパイル手順も自動的に実行されます。

    java MyMain.java
    

    このオプションは、初めて Java を試す場合には便利ですが、別のソース ファイルで定義されているクラスにアクセスできないため、すぐに限界に達します (クラスを個別にコンパイルしてクラスパスに配置しない限り、この方法の使いやすさが損なわれるため、その場合はオプション 1 に戻したほうがよいでしょう)。

    この機能は、330 のそして今でも時々そのように呼ばれます。

特定のケースでは、オプション #1 を使用し、オプション (またはその短縮形)javaを使用してそのクラスを検索する場所を指定します。-classpath-cp

java -classpath C:\Peter\Michael\Lazarus\ Main

もしMain.javaソース コード全体が含まれている場合 (同じディレクトリ内にある場合)、オプション 4 を使用して、コンパイル手順をスキップし、直接コンパイルして実行できます。

java c:\Peter\Michael\Lazarus\Main.java

おすすめ記事