【发布时间】:2021-10-30 06:07:17
【问题描述】:
我正在尝试使用 Java 运行 ANTLR v4。我正在尝试运行以下文件,Hello.java:
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.ParseTree;
public class Hello {
public static void main(String[] args) throws Exception {
System.out.println("Testing");
}
}
使用以下脚本 test.sh:
#!/bin/sh
ANTLR_LIB="antlr-4.9.2-complete.jar"
# Making an empty out directory
touch out
rm -r out
mkdir out
# Generating code
java -jar ${ANTLR_LIB} -no-listener -visitor Expr.g4 -o out/
# Adding in our own code
cp *.java out/
# Compiling everything together
javac -classpath ".;[MY FILE PATH]\antlr-4.9.2-complete.jar" -cp .:out:${ANTLR_LIB} out/Hello.java
# Showing the parse tree
# java -cp .:out:${ANTLR_LIB} org.antlr.v4.gui.TestRig Expr prog -gui $1
# Run the calculator
# java -classpath .:out/:${ANTLR_LIB} Calc $1
我已将 CLASSPATH 设置为包含 antlr-4.9.2-complete.jar,但是当我尝试运行脚本时,我遇到了这个错误:
我不确定如何解决此错误。
【问题讨论】:
-
你的 javac 命令有
-cp和-classpath这很奇怪(我不知道这样做的结果是什么)。antlr-4.9.2-complete.jar到底在哪里? -
@tgdavies antlr-4.9.2-complete.jar 和 Hello.java 存放在同一个目录下: $ dir Hello.java antlr-4.9.2-complete.jar Hello.java antlr-4.9 .2-complete.jar