Я не могу сгенерировать парсер CUP и сканер JFlex в cmd
Я новичок в компиляторе. Я прочитал, что я могу сгенерировать файл xxx.flex в cmd с помощью этого кода:
java JFlex.Main xxx.flex
но я получил эту ошибку:
Ошибка: не удалось найти или загрузить основной класс JFlex.Main
и для создания yyy.cup я набрал:
java_cup.Main yyy.cup
но я тоже получил эту ошибку:
Ошибка: не удалось найти или загрузить основной класс java_cup.Main
я запутался... что мне делать?
1 ответ
Когда вы вызываете
java JFlex.Main xxx.flex
Вы просите Java загрузить JFlex.Main
класс и прохождение xxx.flex
в качестве параметра. Как вы не говорите Java, где это JFlex.Main
класс, java ищет его в своем пути к классам, и если вы не добавили JAR-файл JFlex в путь к классу, это приведет к сообщению об ошибке
Error: Could not find or load main class JFlex.Main
Кстати, имена классов и пространства имен чувствительны к регистру: в файле JAR JFlex Main
класс находится в jflex
каталог, а не JFlex
так что вам нужно вызвать jflex.Main
класс... если вы не используете версию JFlex до 1.5, где JFlex
законно
Чтобы позволить Java найти класс:
- либо изменить путь к системному классу (с переменной среды
$CLASSPATH
- или же%CLASSPATH%
в окнах) - или просто укажите местоположение файла фляги
java
команда с-cp
параметр
Например:
java -cp path/to/jflex-1.6.0.jar jflex.Main xxx.jflex
Если банка находится в текущем каталоге, вы можете просто использовать
java -cp jflex-1.6.0.jar jflex.Main xxx.jflex
Или, проще говоря, поскольку это исполняемый файл, вы можете опустить основной класс
java -jar jflex-1.6.0.jar xxx.jflex
Точно так же кажется, что java отсутствует файл JAR CUP при обработке вашего yyy.cup
файл, вы можете исправить это как для JFlex с
java -cp java-cup-11a.jar java_cup.Main yyy.cup
или же
java -jar java-cup-11a.jar java_cup.Main yyy.cup