«ошибка: не удается найти символ» при компиляции с использованием javac с использованием make-файла - PullRequest
0 голосов
/ 11 октября 2019

Мой каталог в настоящее время выглядит следующим образом

├── Makefile
├── run_tests (Unix executable)
└── src
    └── vehicles
        ├── Wheels.java
        └── Cars.java
    └── RunProgram.java
    tests
    └── test1.txt
    └── test2.txt

RunProgram.java - это мой основной файл.

В Интернете у меня есть Makefile, который выглядит следующим образом:

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

 CLASSES = \
    src/vehicles/Wheels.java \
    src/vehicles/Cars.java \
    src/RunProgram.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) *.class

У меня сейчас есть две основные проблемы.

1. Cars.java выдает «ошибка: не удается найти символ» для колес, даже если он компилирует колесикиво-первых (раньше у меня был неправильный порядок, теперь он правильный).

2. Мне понадобится в конце добавить «тест» в Makefile, который поставляется с собственнымпроблемы. По сути, run_tests поместит все в папку тестов через System.in. Однако у него проблемы с запуском вещей в другом каталоге, поэтому мне нужно вывести RunProgram.class в корневой каталог.

ЭТО КАК Я ПРОБЫВАЮ ТЕСТЫ ИЗ КОМАНДНОЙ СТРОКИ, КОГДА ЕДИНСТВЕННАЯ ПРОГРАММА ВСТРУКТУРА ПАКЕТА БЫЛА RunProgram.java

javac -d ./ ./src/RunProgram.java 
./run_tests "java RunProgram"

Однако, когда я пытаюсь запустить javac, я получаю ошибки, что импорт пакетов не существует. Вот почему я использую Makefile, так как это идеальное решение.

TL; DR Мне нужен способ скомпилировать мою программу с Makefile и написать команду "make test", котораямогу правильно вызвать run_tests

Я также готов принять решение, которое позволяет мне запускать javac из командной строки и запускать тесты оттуда, но Makefile предпочтительнее

1 Ответ

0 голосов
/ 14 октября 2019

Лучшее, что я мог сделать, чтобы решить эту проблему, это сделать файл jar, а затем сделать ./run_tests "java -jar RunProgram.jar" Очевидно, что не идеально, но это сработало.

...