在同一个包和目录中找不到符号
Cannot find symbol in same package and directory
我有两个 类,既定课程和课程。它们都在同一个包和同一个目录中。
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;
}
}
当我尝试编译既定课程时,出现错误:
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,' 执行任何操作,但我真的不知道为什么。我也知道它最终会变得非常明显,但我似乎无法弄清楚。任何帮助将不胜感激。
你需要先编译Course.java——Offering.java依赖它,因为你引用了它。另外,
public int getNumCredits() {
return course.getNumCredits;
}
应该是
public int getNumCredits() {
return course.getNumCredits();
}
将目录更改为 assignment02
的父目录。然后你应该可以使用
javac assignment02\Course.java assignment02\Offering.java
或
javac assignment02\Course.java
javac assignment02\Offering.java
甚至
javac assignment02\*.java
编译器正在从您当前目录的 assignment02
包中寻找 Course
class(因此当您在 assignment02
目录中时,它是有效地尝试查看 assignment02/assignment02
,这显然是不正确的)。
虽然这会解决您当前的问题,但您会收到以下错误:
assignment02\Offering.java:15: cannot find symbol
symbol : variable getNumCredits
location: class assignment02.Course
return course.getNumCredits;
^
1 error
需要更正。
您也可以使用“-classpath”参数进行编译,并将其值设置为父目录,如下所示:
javac -classpath .. Offering.java
我有两个 类,既定课程和课程。它们都在同一个包和同一个目录中。
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;
}
}
当我尝试编译既定课程时,出现错误:
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,' 执行任何操作,但我真的不知道为什么。我也知道它最终会变得非常明显,但我似乎无法弄清楚。任何帮助将不胜感激。
你需要先编译Course.java——Offering.java依赖它,因为你引用了它。另外,
public int getNumCredits() {
return course.getNumCredits;
}
应该是
public int getNumCredits() {
return course.getNumCredits();
}
将目录更改为 assignment02
的父目录。然后你应该可以使用
javac assignment02\Course.java assignment02\Offering.java
或
javac assignment02\Course.java
javac assignment02\Offering.java
甚至
javac assignment02\*.java
编译器正在从您当前目录的 assignment02
包中寻找 Course
class(因此当您在 assignment02
目录中时,它是有效地尝试查看 assignment02/assignment02
,这显然是不正确的)。
虽然这会解决您当前的问题,但您会收到以下错误:
assignment02\Offering.java:15: cannot find symbol
symbol : variable getNumCredits
location: class assignment02.Course
return course.getNumCredits;
^
1 error
需要更正。
您也可以使用“-classpath”参数进行编译,并将其值设置为父目录,如下所示:
javac -classpath .. Offering.java