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