【问题标题】:I cant generate CUP parser and JFlex scanner in cmd我无法在 cmd 中生成 CUP 解析器和 JFlex 扫描器
【发布时间】:2016-06-22 18:35:43
【问题描述】:

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

java JFlex.Main xxx.flex

但我收到了这个错误:

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

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

java java_cup.Main yyy.cup

但我也遇到了这个错误:

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

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

【问题讨论】:

    标签: java parsing compiler-errors jflex cup


    【解决方案1】:

    当你调用时

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多