修正:メインクラスを検索またはロードできませんでした



問題を排除するために楽器を試してください

エラー ' メインクラスを検索またはロードできませんでした ’は、コマンドプロンプトでjavaコマンドを使用して、ターミナルでクラス名を指定してJavaプログラムを起動すると発生します。これが発生する理由は、主に、クラスを宣言する際のユーザーのプログラミングミスが原因です。



Javaコマンドラインでメインクラスを検索またはロードできませんでした

メインクラスを検索またはロードできませんでした-Javaコマンドライン



前述のように、このエラーはほとんどシステムに関連しておらず、ユーザーは以下に示すようにいくつかのシナリオでミスを犯します。先に進む前に、Javaプログラミング言語とその仕組みについての基本的な知識があることを前提としています。



Javaで「メインクラスが見つかりませんでした」というエラーの原因は何ですか?

「メインクラスが見つかりませんでした」というメッセージは、実行のためにクラスをフェッチするJavaエンジンの最初のステップが失敗したことを意味します。ザ・ javaコマンド できなかった 見つける 正しいディレクトリにあるクラス。

場合によっては、を追加する必要があります 正しいファイルパス Javaターミナルを正しい場所に向けます。コマンドライン端末からコマンドを実行しているため、コンピューターはクラスがどこにあるのか、どこにあるのかを認識していません。ターゲットIDEでは、IDEが現在の作業ディレクトリを指すポインタを保持しているため、これは問題ではありません。

「java」構文とは何ですか?

実行しようとしたときに端末がエラーを返す理由のトラブルシューティングを開始する前に、まずコマンドの構文を確認する必要があります。正しい構文を使用していない場合、必然的にこのエラーに直面します。



コマンドの通常の構文は次のようなものです。

java [...] [...]

これはコマンドラインオプションであり、完全修飾Javaクラス名であり、パッケージ全体がコンパイルされるときにアプリケーションに渡されるコマンドライン引数です。

有効なコマンドの例は次のとおりです。

java -Xmx100mcom.acme.example.ListAppualsケビン矢印バート

上記のコマンドは、javaコマンドに次の操作を実行させます。

  • クラス ‘のコンパイル済みバージョンを検索します com.acme.example.ListAppuals '。
  • 検索後、クラスをロードします。
  • 次に、クラスがロードされると、クラスは、有効なシグネチャ、修飾子、および戻り値の型を持つ「main」メソッドを検索されます。サンプルのメインクラスは次のようになります。
public static void main(String [])
  • このメソッドは、引数「kevin」、「arrows」、および「bart」をstring []として使用して呼び出されます。

「メインクラスが見つからないかロードできませんでした」を修正する方法

解決策1:クラス名の引数を確認する

ユーザーが犯す最も一般的な間違いは、引数として間違ったクラス名を指定することです(または、正しいクラス名は間違った形式です)。コマンドラインでパラメータを宣言しているため、クラス名引数を間違った形式で渡す可能性が高くなります。ここでは、間違いを犯す可能性のあるすべてのシナリオをリストします。

  • 書く 単純なクラス名 。 「com.acme.example」などのパッケージでクラスを宣言する場合は、 フルクラス名 パッケージをJavaコマンドに含めます。
java com.acme.example.ListAppuals

の代わりに

java ListAppuals
  • あなたがすべき クラス名を宣言する ファイル名またはパス名を宣言する代わりに。クラスのパス名/ファイル名を宣言した場合、Javaはクラスをフェッチしません。 正しくない エントリには次のものが含まれます。
java ListAppuals.class java com / acme / example / ListAppuals.class
  • ケーシング 考慮に入れる必要があります。 Javaコマンドでは大文字と小文字が区別され、1文字でも間違えると、メインクラスをロードできなくなります。の例 間違った間違い は:
java com.acme.example.listappuals
  • 君は いけない 宣言する ソースファイル名 。前述のように、クラスを正しい完全なクラス名形式で宣言するだけで済みます。間違いの例は次のとおりです。
java ListAppuals.java
  • このエラーは、次の場合にも発生します。 打ち間違い または クラス名を完全に書くのを忘れる

クラス名の宣言でずさんな間違いをした場合は、必ず修正してからプログラムを起動してみてください。

解決策2:クラスパスを確認する

クラス名を正しく宣言してもエラーが表示される場合は、javaコマンドがパスで指定されたクラス名を見つけられなかった可能性があります。クラスパスは、Javaランタイムがリソースファイルとクラスファイルを検索するパスです。以下に示すように、2つの異なるコマンドを使用してクラスパスを簡単に設定できます。

C:> sdkTool -classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 .. ..

クラスパスに関する詳細を確認するには、次のドキュメントを確認する必要があります。

Javaコマンドのドキュメント

クラスパスの設定

解決策3:ディレクトリを確認する

ディレクトリをクラスパスとして宣言すると、そのディレクトリは常に名前空間のルートに対応します。たとえば、「/ usr / local / acme / classes」がクラスパス上にある場合、Javaはクラス「com.acme.example.Appuals」を検索します。次のパス名を持つクラスを検索します。

/usr/local/acme/classes/com/acme/example/Appuals.class

したがって、本質的に、クラスパスに次のアドレスを入力すると、Javaはクラスを見つけることができなくなります。

/ usr / local / acme / classes / com / acme / example

また、あなたをチェックする必要があります サブディレクトリ FQNと一致するかどうかを確認します。クラスのFQNが「com.acme.example.Appuals」の場合、Javaはディレクトリ「com / acme / example」で「Appuals.class」を検索します。

例を挙げると、次のシナリオを想定してみましょう。

  • 実行するクラスは次のとおりです。com.acme.example.Appuals
  • ザ・ フルファイルパス は:/usr/local/acme/classes/com/acme/example/Appuals.class
  • ザ・ 現在の作業ディレクトリ は:/ usr / local / acme / classes / com / acme / example /

次に、次のシナリオが成り立ちます。

#間違っている、FQNが必要java Appuals#間違っている、現在の作業ディレクトリに `com / acme / example`フォルダがないjavacom.acme.example.Appuals#間違っている、上記のシナリオjava-classpathと同様。 com.acme.example.Appuals#OK;相対クラスパスが設定されますjava-classpath ../../ .. com.acme.example.Appuals#OK;絶対クラスパスが設定されますjava-classpath / usr / local / acme / classes com.acme.example.Appuals

注意: クラスパスには、アプリケーションが必要とする他のすべてのクラス(非システム)も含める必要があります。

解決策4:クラスパッケージを確認する

上記のすべての解決策が当てはまる場合は、ソースコードが正しいフォルダーに配置されていることを確認する必要があります。また、あなたは正しく宣言しました パッケージ 。 IDEを使用してコードを実行すると、問題について通知される可能性があります。ただし、この場合、コマンドプロンプトで実行しているため、間違いが気付かれず、議論中のクラスエラーが発生します。

読んだ4分