当你调用时
java JFlex.Main xxx.flex
您要求 java 加载 JFlex.Main 类并将 xxx.flex 作为参数传递。由于您没有告诉 java 那个 JFlex.Main 类在哪里,java 正在其类路径中搜索它,如果您没有将 JFlex jar 文件添加到类路径中,则会导致错误消息
Error: Could not find or load main class JFlex.Main
顺便说一句,类名和命名空间区分大小写:在 JFlex jar 文件中,Main 类位于jflex 目录中,而不是JFlex,因此您需要调用jflex.Main 类...除非您使用的是 1.5 之前的 JFlex 版本,其中JFlex 是合法的。
让java找到类:
- 要么更改系统类路径(在 windows 中使用环境变量
$CLASSPATH- 或 %CLASSPATH%)
- 或者只是通过
java 命令和-cp 参数提供jar 文件的位置
例如:
java -cp path/to/jflex-1.6.0.jar jflex.Main xxx.jflex
如果jar在当前目录下,可以直接使用
java -cp jflex-1.6.0.jar jflex.Main xxx.jflex
或者更简单,因为它是一个可执行的jar,你可以省略主类
java -jar jflex-1.6.0.jar xxx.jflex
同样,java 在处理您的yyy.cup 文件时似乎缺少 CUP jar 文件,您可以像使用 JFlex 一样修复它
java -cp java-cup-11a.jar java_cup.Main yyy.cup
或
java -jar java-cup-11a.jar java_cup.Main yyy.cup