我无法在cmd中生成CUP解析器和JFlex扫描程序

时间:2016-06-22 18:35:44

标签: java parsing compiler-errors jflex cup

我是编译器的新手。我已经读过,我可以通过以下代码在cmd中生成xxx.flex文件:

  

java JFlex.Main xxx.flex

但我收到了这个错误:

  

错误:无法找到或加载主类JFlex.Main

并且为了生成yyy.cup,我输入了:

  

java java_cup.Main yyy.cup

但我也遇到了这个错误:

  

错误:无法找到或加载主类java_cup.Main

我很困惑......我该怎么办?

1 个答案:

答案 0 :(得分:0)

当您调用

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
BTW,类名和命名空间区分大小写:在JFlex jar文件中,Main类位于jflex目录中,而不是JFlex,因此您需要调用{ {1}}类...除非您使用1.5之前的JFlex版本jflex.Main是合法的。

让java找到类:

  • 更改系统类路径(使用环境变量JFlex - 或Windows中的$CLASSPATH
  • 或仅使用%CLASSPATH%参数提供java命令的jar文件的位置

例如:

-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 

同样地,似乎java在处理java -jar jflex-1.6.0.jar xxx.jflex 文件时缺少CUP jar文件,你可以像JFlex一样修复它

yyy.cup

java -cp java-cup-11a.jar java_cup.Main yyy.cup