2015-09-16 2 views
0

У меня есть два класса, предложение и курс. Они оба находятся в одном пакете и в одном каталоге.Невозможно найти символ в том же пакете и каталоге

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 

Я знаю, что ошибка означает, что компилятор не может ничего сделать с помощью «Курса», но я действительно не знаю, почему. Я также знаю, что это окажется чем-то невероятно очевидным, но я просто не могу понять это. Любая помощь могла бы быть полезна.

+1

Это не должно быть 'D: \ CS 140> Javac assignment02 \ Offering. java'? – immibis

+1

Вы сначала компилировали Course.java? – jhn

+0

Измените каталоги в родительский каталог и попробуйте 'javac assign02 \ Course.java assign02 \ Offerering.java'. Затем вы также сможете скомпилировать классы по отдельности. Компилятор пытается найти класс 'Course' в пакете' assign02' из вашего местоположения CURRENT – MadProgrammer

ответ

4

Изменение каталогов в родительском каталоге 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 

, который нужно будет исправлять

+0

Ну, вы решили первую проблему, спасибо! Теперь я получаю эту ошибку, но когда я смотрю на Offering.java, я исправил проблему. Однако компилятор все еще читает неверную версию. Я сохранил Offering.java после того, как исправил эту проблему. – John

+0

Попробуйте удалить файлы .class – MadProgrammer

+0

Нет, все еще не распознавая изменения.Это странно – John

0

Вам необходимо скомпилировать Course.java first-Offering.java, потому что вы ссылались на него. Кроме того,

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

должен быть

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

Course.java скомпилирован, и я все еще получаю ту же ошибку – John

Смежные вопросы