Когда вы вызываете
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