Создание каталога для раздельного хранения исходных файлов и файлов классов. Тем не менее, я не могу расширить один класс на другой в том же пакете - PullRequest
1 голос
/ 18 мая 2019

Ниже приведен поток каталогов, который я пытаюсь создать:

фирменный папка.

в папке компании У меня есть папка class и папка source .

в исходной папке У меня есть папка pack1.

-> компания \ класс

-> компания \ источник \ Pack1

Внутри папки pack1 у меня есть два исходных файла: A.java и B.java, где класс B расширяет класс A.

-> компания \ источник \ Pack1 \ A.java

-> компания \ источник \ Pack1 \ B.java

Теперь я хочу скомпилировать класс A и класс B и сохранить файлы классов A и B в Company \ class \ pack1

Файлы классов должны храниться следующим образом:

-> компания \ класс \ Pack1 \ класс A.class

-> компания \ класс \ Pack1 \ B.class

Общий код:

package pack1;
public class A
{
  //class A implementation
}

----------------------------------------
package pack1;
public class B extends A
{
  //class B implementation
}

Команда, которую я использовал в командной строке:

F:\company\source\pack1> javac -d ../../class A.java

Проблем не было. A.class был создан внутри company \ class \ pack1

Но я попытался скомпилировать B.java

F:\company\source\pack1> javac -d ../../class B.java

я получил следующую ошибку:

B.java:3: error: cannot find symbol
public class B extends A
                   ^
symbol: class A
1 error

Я искал везде. Я не могу спать из-за этого. Я новичок в Java, и я хочу знать, почему я не могу унаследовать от класса A до класса B, даже если оба исходных файла находятся в одной папке.

Пожалуйста, проинформируйте меня подробно. Спасибо

1 Ответ

0 голосов
/ 18 мая 2019

Компиляция класса B требует, чтобы компилятор знал класс A. Он не является частью источников, над которыми работает компилятор, и не находится в пути к классам. Итак, 2 решения, которые я вижу:

а) собрать источники вместе, например,

javac -d ../../class A.java B.java

b) Убедитесь, что класс A можно найти в пути к классам при компиляции B:

javac -d ../../class A.java
javac -d ../../class -cp ../../class B.java
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...