Javac не распознает классы, которые находятся в одном каталоге - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь скомпилировать свою программу на Java, которая использует внешние библиотеки. Программа без ошибок компилируется в IDE. После компиляции в терминале я столкнулся с тем, что компилятор не распознает написанный мной код. Все файлы находятся в одном каталоге. Я использую Makefile.

Ниже приведен вызов javac и возникающие в результате ошибки. Все файлы Java и Jar находятся в текущем каталоге.

    $ javac -cp "./*" Driver.java
    Driver.java:22: error: cannot find symbol
            DataSetProcessor processor = new DataSetProcessor();
            ^
      symbol:   class DataSetProcessor
      location: class Driver
    Driver.java:22: error: cannot find symbol
            DataSetProcessor processor = new DataSetProcessor();
                                             ^
      symbol:   class DataSetProcessor
      location: class Driver
    Driver.java:29: error: cannot find symbol
    HashMap<Integer, Dealer> map = processor.getDealerVehicleRelationship(dataSetID, vehicleIDsList);
                     ^
      symbol:   class Dealer
      location: class Driver
    3 errors

Dealer.java & DataSetProcessor.java находятся в текущем каталоге.

Может кто-нибудь объяснить, в чем заключается моя проблема? Я не могу этого понять.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Вы должны сделать следующее:

  • Поместить все свои библиотеки в каталог с именем lib,
  • Поместить все созданные вами классы в текущий каталог.
  • Для классов, которые вы используете для jar, вам понадобятся операторы импорта
  • Для классов, которые вы создаете, вам не нужны операторы импорта.
  • Используйте следующую команду для компиляции:

$ javac -cp "lib / * :."Driver.java

0 голосов
/ 04 апреля 2019

Мое использование -cp было неверным. Я использую Mac; Я не уверен, что в этом причина.

Последний вызов компилятора теперь:

$ javac -cp lib/commons-io-2.6.jar:lib/json-20180813.jar:. Driver.java

и вызов для запуска программы:

$ java -cp lib/commons-io-2.6.jar:lib/json-20180813.jar:. Driver

...