我是编译器新手。我读过我可以通过此代码在cmd中生成xxx.flex文件:
但我得到这个错误:
为了生成yyy.cup,我输入了:
但我也收到此错误:
我感到困惑...我该怎么办?
最佳答案
调用时
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
顺便说一句,类名和 namespace 区分大小写:在JFlex jar文件中,
Main
类位于jflex
目录中,而不是JFlex
中,因此您需要调用jflex.Main
类...除非您使用的是1.5之前的JFlex版本JFlex
是合法的。要让Java查找类:
$CLASSPATH
-或Windows中的%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