コマンドラインから .class ファイルを実行しようとしています。保存されているディレクトリに手動で移動すると動作しますが、次のようにすると:
java C:\Peter\Michael\Lazarus\Main
メインクラスが見つからないと表示されます。.jar ファイルを作成する以外に、これに対する解決策はありますか (.jar が最善の解決策であることはわかっていますが、現時点では探しているものではありません)?
ベストアンサー1
のJava アプリケーション ランチャー(別名java.exe
または単にjava
) は、起動するものを指定するための最大 4 つの異なる方法をサポートしています (使用する Java バージョンによって異なります)。
指定するクラス名最も基本的な方法です。クラス名は、ファイル名。
java -cp path/to/classFiles/ mypackage.Main
ここでクラスを開始し
mypackage.Main
、-cp
スイッチを使用して、クラスを見つけるために使用されるクラスパスを指定します (クラスへの完全なパスはmypackage.Main
になりますpath/to/classFiles/mypackage/Main.class
)。jar ファイルを起動しています。
java -jar myJar.jar
これにより、jar自体とその
Class-Path
エントリで指定されたすべてのものがクラスパスに配置され、エントリで指定されたクラスが起動されますMain-Class
。この場合、できない追加のクラスパスエントリを指定します (これらは黙って無視されます)。Java 9 ではモジュールが導入され、オプション 2 の動作と同様の方法で特定のモジュールを起動する方法が導入されました (モジュール専用のメイン クラスを起動するか、そのモジュール内でユーザー指定のクラスを起動するかのいずれか)。
java --module my.module
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