1. ホーム
  2. java

[解決済み] 同じパッケージとディレクトリにあるシンボルが見つからない

2022-02-15 23:57:40

質問

OfferingとCourseという2つのクラスがあります。これらは両方とも同じパッケージと同じディレクトリにあります。

Offering.java。

package assignment02;

public class Offering implements Comparable<Offering> {
    private Course course;
    private int CRN;
    private int semester;

    public Offering(Course course, int CRN, int semester) {
        this.course = course;
        this.CRN = CRN;
        this.semester = semester;
    }

    public int getNumCredits() {
        return course.getNumCredits;
    }

    public int getCRN() {
        return CRN;
    }

    public int getSemester() {
        return semester;
    }

    public int compareTo(Offering other) {
        if(other == null) return - 1;
        return semester - other.semester;
    }
}

Course.javaです。

package assignment02;

public class Course {
    private String name;
    private String rubric;
    private String number;
    private int numCredits;

    public Course(String name, String rubric, String number, int numCredits) {
        this.name = name;
        this.rubric = rubric;
        this.number = number;
        this.numCredits = numCredits;
    }

    public String getName() {
        return name;
    }

    public String getRubric() {
        return rubric;
    }

    public String getNumber() {
        return number;
    }

    public int getNumCredits() {
        return numCredits;
    }
}

Offeringをコンパイルしようとすると、エラーが発生します。

D:\CS 140\assignment02>javac Offering.java
Offering.java:4: error: cannot find symbol
    private Course course;
            ^
   symbol:   class Course
   location: class Offering

そして

Offering.java:8: error: cannot find symbol
    public Offering(Course course, int CRN, int semester) {
                    ^
   symbol:   class Course
   location: class OfferingOffering.java:8: error: cannot find symbol

このエラーは、コンパイラが'Course'に対して何もできないことを意味しているのは分かっているのですが、その理由がよく分からないのです。また、それは信じられないほど明白なことで終わることも分かっているのですが、どうしても分からないのです。どんな助けでも、本当に感謝します。

どのように解決するのですか?

の親ディレクトリにディレクトリを変更します。 assignment02 . そうすると、次のようになります。

javac assignment02\Course.java assignment02\Offering.java

または

javac assignment02\Course.java 
javac assignment02\Offering.java

あるいは

javac assignment02\*.java

コンパイラは Course クラスは assignment02 パッケージからカレントディレクトリに移動します。 assignment02 ディレクトリを探そうとするので、実質的には assignment02/assignment02 これは明らかに正しくない)。

これで現在の問題は解決しますが、その後、次のようなエラーが発生します。

assignment02\Offering.java:15: cannot find symbol
symbol  : variable getNumCredits
location: class assignment02.Course
    return course.getNumCredits;
                 ^
1 error

修正する必要があります。