我是编译器新手。我读过我可以通过此代码在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
    

    10-04 18:56