Я не могу сгенерировать парсер CUP и сканер JFlex в cmd

я новичок в компиляторе. я читал, что могу сгенерировать файл xxx.flex в cmd с помощью этого кода:

Java JFlex.Main xxx.flex

но я получил эту ошибку:

Ошибка: не удалось найти или загрузить основной класс JFlex.Main

и для создания yyy.cup я набрал:

java java_cup.Main гггг.cup

но я тоже получил эту ошибку:

Ошибка: не удалось найти или загрузить основной класс java_cup.Main

я запутался... что мне делать?


person Eng.sabbath    schedule 22.06.2016    source источник


Ответы (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% в окнах)
  • или просто укажите расположение файла jar командой 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 

Или, проще говоря, поскольку это исполняемый файл jar, вы можете опустить основной класс.

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

or

java -jar java-cup-11a.jar java_cup.Main yyy.cup
person Seki    schedule 06.08.2016