2016-06-22 5 views
1

Я новичок в компиляторе. я читал, что я могу генерировать xxx.flex файл в ЦМД этим кодом:Я не могу генерировать парсер CUP и сканер JFlex в cmd

java JFlex.Main xxx.flex

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

Error: Could not find or load main class JFlex.Main

и для генерации yyy.cup, я напечатал:

java java_cup.Main yyy.cup

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

Error: Could not find or load main class java_cup.Main

Я смущен ... что мне делать?

ответ

0

Когда вы вызываете

java JFlex.Main xxx.flex 

Вы спрашиваете Java, чтобы загрузить JFlex.Main класс и передавая xxx.flex в качестве параметра. Как вы не говорите Java, где что JFlex.Main класс Java ищет его в пути к классам, и если вы не добавить банку файл JFlex в путь класса, это приводит к сообщению об ошибке

Error: Could not find or load main class JFlex.Main 

BTW, имена классов и пространства имен чувствительны к регистру: в jar-файле JFlex класс Main находится в каталоге jflex, а не JFlex, поэтому вам необходимо вызвать класс jflex.Main ... если вы не используете версию JFlex до 1.5, где JFlex является законным.

Для того, чтобы ява найти класс:

  • либо изменить путь к классу (с переменной окружения $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 отсутствует в банку файл 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