我是编译器的新手。我读到我可以通过此代码在CMD中生成xxx.flex文件:
java jflex.main xxx.flex
但是我有一个错误:
错误:找不到或加载主类JFLEX.MAIN
并且为了生成yyy.cup,我输入了:
java java_cup.main yyy.cup
,但我也有这个错误:
错误:找不到或加载主类Java_cup.main
我感到困惑...我该怎么办?
当您调用
时java JFlex.Main xxx.flex
您要求Java加载JFlex.Main
类并将xxx.flex
作为参数传递。因为您不告诉Java JFlex.Main
类在哪里,Java在其classPath中搜索它,如果您不将JFLEX JAR文件添加到类路径,则会导致错误消息
Error: Could not find or load main class JFlex.Main
btw,班级名称和名称空间对病例敏感:在JFLEX JAR文件中,Main
类在jflex
目录中,而不是JFlex
,因此您需要调用jflex.Main
类...除非您使用的是JFLEX版本在1.5之前JFlex
是合法的。
让Java找到类:
- 要么更改系统类路径(带有环境变量
$CLASSPATH
-或Windows中的%CLASSPATH%
) - 或仅提供JAR文件的位置,即
java
命令使用-cp
参数
例如:
java -cp path/to/jflex-1.6.0.jar jflex.Main xxx.jflex
如果罐子在当前目录中,则可以使用
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