Java でパッケージが存在しないというエラーを解決する
今日は、エラーとその理由を理解するために、Java で package does not exist エラーを再現します。 さらに、コード例の助けを借りてその解決策についても学びます。
Java での Package Does Not Exist のデモンストレーション
コード例 (Students.java ファイル):
package name;
public class Students implements Comparable<Students> {
private String studentFirstName;
private String studentLastName;
public Students(String studentFirstName, String studentLastName) {
this.studentFirstName = studentFirstName;
this.studentLastName = studentLastName;
}
public String getStudentFirstName() {
return studentFirstName;
}
public void setStudentFirstName(String studentFirstName) {
this.studentFirstName = studentFirstName;
}
public String getStudentLastName() {
return studentLastName;
}
public void setStudentLastName(String studentLastName) {
this.studentLastName = studentLastName;
}
/**
*
* @param other
* @return
*/
@Override
public int compareTo(Students other) {
int compareResults = this.studentLastName.compareTo(other.studentLastName);
if (compareResults == 0) {
if (this.studentFirstName.chars().count() == other.studentFirstName.chars().count()) {
compareResults = 0;
return compareResults;
} else if (this.studentFirstName.chars().count() > other.studentFirstName.chars().count()) {
compareResults = 1;
return compareResults;
} else {
compareResults = -1;
return compareResults;
}
} else {
return compareResults;
}
}
}
コード例 (StudentMain.java ファイル):
import names.Students;
public class StudentMain {
public static void main(String[] args) {
Students student1 = new Students("Ali", "Ashfaq");
Students student2 = new Students("Ali", "Ashfaq");
System.out.println("Comparison 1: " + student1.compareTo(student2));
Students student3 = new Students("Ali", "Ashfaq");
Students student4 = new Students("Zoya", "Ashfaq");
System.out.println("Comparison 2: " + student3.compareTo(student4));
Students student5 = new Students("Mehr-un-nissa", "Ashfaq");
Students student6 = new Students("Hina", "Ashfaq");
System.out.println("Comparison 3: " + student5.compareTo(student6));
}
}
main()メソッドを含むものを除くすべての.javaファイルが配置されているディレクトリDesktop/java/stuff/com/nameがあります。 上記のコード例では、Students.java は Desktop/java/stuff/com/name ディレクトリにありますが、main() メソッドを持つ StudentMain.java は Desktop/java/ ディレクトリにあります。 stuff/com ディレクトリ。
Desktop/java/stuff を CLASSPATH に設定したことに注意することも重要です。
エラーとその原因を理解するためにコードを理解しましょう。
上記のコードは、Students の姓を比較し、結果を compareResults 変数に格納します。 この結果は、さらに彼らの名を比較するために使用されます。 どうやって?
姓が一致する場合、結果は true は 0 を意味します。 そのため、if 条件にジャンプして、名前の文字数が一致するかどうかを評価します。
名を比較した結果は、次の条件に基づいています。
this.countがother.countと等しい場合、結果は0になります。this.countがother.countより大きい場合、結果は1になります。this.countがother.countより小さい場合、結果は-1になります。
しかし、プログラムをコンパイルしようとすると、次のエラーが発生します。
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff\com>javac StudentMain.java
StudentMain.java:1: error: package names do not exist
import names.Students;
それは何を意味し、なぜ私たちはこの問題に直面しているのでしょうか? このエラーは、インポートしようとしているパッケージが存在しないことを意味します。
これにはさまざまな理由が考えられますが、そのすべてを以下に示します。
-
間違ったパッケージをインポートしたか、パッケージのインポート中にタイプミスがある可能性があります。
-
すべてのファイルが正しいサブディレクトリにあるかどうかを再確認します。
-
CLASSPATHをDesktop/java/stuffに設定した場合、package name;で定義されたファイルDesktop/java/stuff/com/nameディレクトリに存在する必要があります。 これ をチェックして、CLASSPATHの設定方法を学習できます。 -
すべての Java ソース ファイルが正しいサブディレクトリにあることを確認します。 また、Java ソース ファイルが
Desktop/java/stuff/com/nameディレクトリにコンパイルされていることも確認する必要があります。なぜ?
.classファイルはCLASSPATH上にある必要があります。.javaファイルはCLASSPATHではなくSOURCEPATHにある必要がありますが、.classファイルはjavacコマンドを使用してファイルをコンパイルするときに生成されることに注意してください。 -
組み込みパッケージを適切に使用しない場合にも、このエラーが発生します。 次のコードを参照してください。
コード例:
public class Test {
public static void main(String[] args) {
/*
Solution: This line must be as follows:
System.out.println("Hi!");
*/
system.out.println("Hi!");
}
}
エラーの説明:
Test.java:3: error: package system does not exist
system.out.println("Hi!");
^
1 error
Java でパッケージが存在しないエラーを解決する
コード例 (Students.java ファイル):
package name;
public class Students implements Comparable<Students> {
private String studentFirstName;
private String studentLastName;
public Students(String studentFirstName, String studentLastName) {
this.studentFirstName = studentFirstName;
this.studentLastName = studentLastName;
}
public String getStudentFirstName() {
return studentFirstName;
}
public void setStudentFirstName(String studentFirstName) {
this.studentFirstName = studentFirstName;
}
public String getStudentLastName() {
return studentLastName;
}
public void setStudentLastName(String studentLastName) {
this.studentLastName = studentLastName;
}
/**
*
* @param other
* @return
*/
@Override
public int compareTo(Students other) {
int compareResults = this.studentLastName.compareTo(other.studentLastName);
if (compareResults == 0) {
if (this.studentFirstName.chars().count() == other.studentFirstName.chars().count()) {
compareResults = 0;
return compareResults;
} else if (this.studentFirstName.chars().count() > other.studentFirstName.chars().count()) {
compareResults = 1;
return compareResults;
} else {
compareResults = -1;
return compareResults;
}
} else {
return compareResults;
}
}
}
コード例 (StudentMain.java ファイル):
import name.Students;
public class StudentMain {
public static void main(String[] args) {
Students student1 = new Students("Ali", "Ashfaq");
Students student2 = new Students("Ali", "Ashfaq");
System.out.println("Comparison 1: " + student1.compareTo(student2));
Students student3 = new Students("Ali", "Ashfaq");
Students student4 = new Students("Zoya", "Ashfaq");
System.out.println("Comparison 2: " + student3.compareTo(student4));
Students student5 = new Students("Mehr-un-nissa", "Ashfaq");
Students student6 = new Students("Hina", "Ashfaq");
System.out.println("Comparison 3: " + student5.compareTo(student6));
}
}
StudentMain.java ファイルに間違ったパッケージをインポートしたため、package does not exist エラーが発生しました。 import name.Students; としてインポートしていましたが、import name.Students; である必要があります。
CLASSPATH の設定方法を含め、以下のすべてのコマンドが表示されます。
出力:
C:\Users\MEHVISH ASHIQ>cd Desktop/java/stuff
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff>set classpath=.;
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff>cd com/name
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff\com\name>javac Students.java
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff\com\name>cd..
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff\com>javac StudentMain.java
C:\Users\MEHVISH ASHIQ\Desktop\java\stuff\com>java StudentMain
Comparison 1: 0
Comparison 2: -1
Comparison 3: 1
