1

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

java JFlex.Main xxx.flex

但我收到了这个错误:

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

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

java java_cup.Main yyy.cup

但我也遇到了这个错误:

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

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

4

1 回答 1

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该类...除非您使用的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
于 2016-08-06T00:28:30.120 回答