我是编译器的新手。我读过我可以通过以下代码在 cmd 中生成 xxx.flex 文件:
java JFlex.Main xxx.flex
但我收到了这个错误:
错误:无法找到或加载主类 JFlex.Main
为了生成 yyy.cup ,我输入:
java java_cup.Main yyy.cup
但我也遇到了这个错误:
错误:无法找到或加载主类 java_cup.Main
我很困惑……我该怎么办?
我是编译器的新手。我读过我可以通过以下代码在 cmd 中生成 xxx.flex 文件:
java JFlex.Main xxx.flex
但我收到了这个错误:
错误:无法找到或加载主类 JFlex.Main
为了生成 yyy.cup ,我输入:
java java_cup.Main yyy.cup
但我也遇到了这个错误:
错误:无法找到或加载主类 java_cup.Main
我很困惑……我该怎么办?
当你调用
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
该类...除非您使用的JFlex
是合法的 1.5 之前的 JFlex 版本。
让java找到类:
$CLASSPATH
- 或%CLASSPATH%
在 Windows 中)java
命令的 jar 文件的位置-cp
例如:
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 在处理文件时缺少 CUP jar 文件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