2014-10-28 2 views
0

Учитывая следующие классы:Компиляция класса с зависимостью в Java

package a.b; 
public class C { 
    public B b; 
} 

, а в другом файле:

public class B {} 

Стоя в папке folder, выполняя

javac B.java 
javac a/b/C.java -cp . 

будет генерировать B.class внутри folder и будет ret urn a Symbol not found по второй команде.

Как (без внесения каких-либо изменений в какие-либо классы B и C) я могу скомпилировать C.java?

EDIT: может быть, это не может быть сделано

+0

Ошибка '' Символ не найден', потому что 'javac' не может проанализировать объявление переменной в' C.java', правильно? – APerson

+0

Правильно, не удается найти B – DrStein

ответ

0

Если вы создаете и классы в одном файле Java, то только один класс должен быть объявлен «общественного» класса. И имя файла должно быть указано как Публичный класс name.java

Также неверен способ создания экземпляра класса B. Это должно быть сделано следующим образом: B b = новый B();

Обязательно компилируй как: javac -d. C.java

и убедитесь, чтобы удалить модификатор общего доступа из класса B.

+1

'public B b;' правильно (поле класса) Оба класса находятся в разных файлах – DrStein

+0

Если они находятся в разных файлах, измените вашу строку 3 как: B b = new B() ; и скомпилируйте его с помощью javac -d (каталог пакета a.b) B.java. Это заставило бы его работать и убедиться, что вы написали свой основной метод. – pankajpkb

+0

исправьте свой ответ перед отправкой –

0

Почему компилировать их отдельно?

javac B.java a/b/C.java 

Я считаю, что это будет работать нормально, так как javac будет иметь возможность видеть оба ваших файлов.

Вам не понадобится опция -cp, так как вы уже сообщаете javac обо всем, что вам нужно.

+0

Я тестирую это, он не работает. И даже если бы это сработало, это не решило бы мою проблему. Возможно, этого не может быть сделано – DrStein

+0

Как он работает? Является ли 'javac' неспособным найти один или оба файла или выдает ошибку при компиляции файла? – APerson

+0

Произошла такая же ошибка, символ не найден, ссылаясь на тип B поля b в классе C – DrStein

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