明らかな理由もなくJavaプロジェクトでメインクラスが見つからないというエラーが発生し続ける場合でも、心配しないでください。あなただけではありません。
最も予測不可能で自然発生的なエラーの1つとして、JVM(Java仮想マシン)がデフォルトのクラスパスに固執する傾向があるため、「メインクラスが見つかりません」という問題はアマチュアとプロの両方を悩ませています。
しかし、この問題は実際には見た目ほど威圧的ではありません。このエラーを完全に取り除く方法を見つけるために読んでください。
メインクラスが見つからなかったのはなぜですか?
JVMがメインクラスを見つけることができなかった方法と理由を理解しようとする前に、次の概念を理解する必要があります。 クラスパス Javaで。
クラスパスとは何ですか?
クラスパスは、Javaランタイム環境がクラスやその他のリソースファイルを検索するファイルパスです。どちらかを使用して設定できます -クラスパス プログラム実行時またはシステム設定時のオプション クラスパス 環境変数。
名前が示すように、それは単にファイルパスであり、 。クラス ファイルは、JDKパッケージまたはディレクトリにあります。
JVMがメインクラスを見つけることができない場合、それは多くの場合、対応するものを探しているためです。 。クラス 間違ったクラスパスのファイル。もちろん、この問題を修正する方法は、パッケージを使用するか、クラスパスを指定することにより、クラスパスを手動で指定することです。
この時点で、Javaクラスのメモリを更新したい場合は、次のガイドを確認してください。 Javaでクラスを作成する 。
連絡先をiPhoneからAndroidにコピーする
パッケージの使用
というクラスを作成しましょう テスト 。と呼ばれるパッケージに入れます testPackage 。パッケージは、類似したクラスをグループ化するため、またはクラスに一意の名前空間を提供するためにJavaで使用されます。
この簡単な例では、パッケージを使用すると、Javaのクラスパスがどのように機能するかを視覚化するのに役立ちます。ファイルマネージャーアプリケーションでは、パッケージは独立したフォルダーとして表されます。
package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}
次に、新しいターミナルを開き、作業ディレクトリがパッケージフォルダを含むディレクトリと同じであることを確認します。を使用して作業ディレクトリを変更できます CD 任意のオペレーティングシステムでのコマンド。
コンパイル Test.java 次のコマンドを実行します。
package testPackage;
javac testPackage/Test.java
これにより、コンパイルされたバイナリファイル(.classファイル)がtestPackageに保存されます。
コンパイルされたクラスを実行するには、コマンドラインで完全修飾クラス名を入力する必要があります。 Javaクラスの完全修飾名は、パッケージ名の前に付けられた名前を指します。この場合、これは次のようになります。
java testPackage.Test
クラスファイルを呼び出すこの方法により、同じ作業ディレクトリから異なるパッケージから実行可能ファイルを呼び出すこともできます。完全修飾クラス名を変更するだけです。
より高度な実装では、パッケージ内のファイルをより適切に管理するために、クラスとソースファイルに別々のサブフォルダーを作成することをお勧めします。
クラスパスを手動で指定する
Javaファイルを管理するための推奨される方法は、ソースファイルとクラス用に別々のディレクトリを作成することです。プロジェクトに取り組んでいる場合は、すでにこれを行っている可能性があります。
従来、ソースファイルのあるディレクトリには次のようにラベルが付けられていました。 src .classファイルを持つものは次のようにラベル付けされます クラス。 これは、適切に構造化されたディレクトリにより、JVMがメインクラスを見つけられない可能性を大幅に減らす方法でもあります。
この方法を使用すると、コンパイル前のディレクトリ構造は次のようになります。
Wi-Fiを修正する方法に有効なIP構成がありません
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
上の図のすべてのインデントは、プロジェクトが従う必要のあるファイル階層の1つのレベルに対応しています。
これをコンパイルするには、作業ディレクトリがmyFolderであることを確認してください。ここで、次のコマンドを入力します。
javac -d classes src/testPackage/Test.java
NS 。クラス 実行可能ファイルはに保存する必要があります myFolder / classes / testPackage 。したがって、ファイルディレクトリ構造は次のようになります。
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class
を実行するには 。クラス ファイルで、完全修飾クラス名を使用してJavaコマンドを実行し、ローカルクラスパスを指定します。すべてのパスは、作業ディレクトリ(この場合はmyFolder)を基準にして宣言されます。
java -classpath classes testPackage
このコマンドを実行すると、目的の出力が得られます。しかし、単純なエラーを解決するために、なぜこれほど多くの再編成が必要なのですか?
Javaでファイルを整理することの重要性
「メインクラスを検索またはロードできませんでした」がスローされる理由は、JVMが場所を見つけることができなかったためです。 。クラス ファイルが保存されていました。
このエラーを解決する最も簡単な方法は、.classファイルが格納される場所を制御し、JVMにそこを参照するように明示的に指示することです。これは、ソースファイルと実行可能ファイルを別々に整理し、作業ディレクトリからすべてを制御することで可能になります。
次のような構成を追加し始めると 継承 プロジェクトにとって、ファイルシステムの複雑さは多様性を増すことになります。このようなプロジェクトや、JARファイルやカスタムライブラリの使用が必要なプロジェクトでも、ファイルを分離して管理するという簡単な方法で、トラブルシューティングとデバッグにかかる時間を数え切れないほど節約できます。
Javaでクラスパスがどのように機能するか、およびコードの実行に関して制御できる多くのことについて詳しくは、Oracleの 詳細でユーザーフレンドリーなリファレンス 。
共有 共有 つぶやき Eメール 新しいプログラマーのための10のベストビギナープロジェクトプログラミングを学びたいが、どこから始めればいいのかわからない?これらの初心者向けプログラミングプロジェクトとチュートリアルは、あなたを始めるでしょう。
iCloudで写真を表示する方法次を読む 関連トピック
- プログラミング
- Java
Yashは、物を作り、すべての技術について書くのが大好きな、意欲的なコンピューターサイエンスの学生です。余暇には、Squashをプレイしたり、最新のMurakamiのコピーを読んだり、Skyrimでドラゴンを狩ったりするのが好きです。
YashChellaniのその他の作品ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください