Я пытался протестировать простой проект, написанный некоторыми студентами. Я тестирую его на Ubuntu, и проект требует, чтобы я использовал ANTLR и Makefile. Было кошмаром найти конфигурацию make-файла, файлов и папок, которая успешно компилируется и выполняется.
Итак, в основном это настройка папки / файла:
Makefile
test.txt
laboratorio/
lab02/
Main.java
Lab02.g
Содержимое Main.java довольно простое. Они просто читают грамматический токен за токеном:
package laboratorios.lab02;
import org.antlr.v4.runtime.*;
public class Main{
public static void main(String[] args) throws Exception{
try{
Lab02 lexer = new Lab02(new ANTLRFileStream(args[0]));
while (lexer.nextToken().getType() != Token.EOF);
}catch(ArrayIndexOutOfBoundsException aiobe){
System.err.println("Must provide a valid path to the filename with the tokens");
System.exit(1);
}catch(Exception e){
System.err.println("Must provide a valid path to the filename with the tokens");
System.exit(1);
}
}
}
Содержимое Lab02.g (грамматика) не имеет отношения к проблеме, но он создает файл Lab02.java (с пакетом labratorios.lab02), который должен быть скомпилирован и на который будет ссылаться файл Main.java.
Проблема возникла при попытке протестировать make-файл на Ubuntu. При каждой конфигурации, которую я пробовал, я продолжал получать ошибки (при компиляции или запуске основного файла java), например:
- java.lang.NoClassDefFoundError: org / antlr / v4 / runtime / CharStream
- Не удалось найти или загрузить основной класс org.antlr.v4.Tool
- Ошибка: не удалось найти или загрузить основной класс
Я выполнил точные шаги из этого руководства, чтобы настроить antlr на моем компьютере: Начало работы с ANTLR v4