我在将 ANTLR 添加到我的 Java 类路径并使其正常工作时遇到困难。我已按照通常的步骤操作,但仍然遇到错误消息:
package org.antlr.v4.runtime.tree does not exist(compiler.err.doesnt.exist) org.antlr.v4.runtime.tree
我已经从官方网站下载了ANTLR JAR文件(antlr4-4.7.1-complete.jar&antlr-4.13.1-complete.jar)。 (由于某种原因我下载了2个)
这是我迄今为止尝试过的;
我在终端中使用以下命令设置了类路径:
export CLASSPATH="/Users/ciansullivan/Downloads/antlr4-4.7.1-complete.jar"
我还在我的 PATH 中添加了一个包含 JAR 文件的目录。
(我可以确认,当我回显 CLASSPATH 时,它会返回正确的文件路径。)
但是,我仍然收到错误。我怀疑该问题可能与多个版本的 ANTLR 有关,因为我的系统上安装了两个版本。我尝试将每个版本单独添加到类路径中,但问题仍然存在。
有人可以指导我如何在我的 Java 项目中正确设置 ANTLR 并解决此错误吗?任何帮助将不胜感激。
附加信息:
操作系统:[Mac OS]
ANTLR Version(s): [antlr4-4.7.1-complete.jar & antlr-4.13.1-complete.jar]
IDE:[VS代码]
将以下内容粘贴到 shell 脚本中:
#!/usr/bin/env sh
ANTLR_JAR="antlr-4.13.1-complete.jar"
if [ ! -f "$ANTLR_JAR" ]
then
# Download the ANTLR jar if it isn't in the current working directory
wget "https://www.antlr.org/download/$ANTLR_JAR"
fi
# Create a test grammar
cat << EOF > Test.g4
grammar Test;
parse : ANY* EOF;
ANY : .;
EOF
# Generate the lexer and parser classes
java -jar "$ANTLR_JAR" Test.g4
# Create a driver class
cat << EOF > Main.java
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.ParseTree;
public class Main {
public static void main(String[] args) {
String source = "test";
TestLexer lexer = new TestLexer(CharStreams.fromString(source));
TestParser parser = new TestParser(new CommonTokenStream(lexer));
ParseTree root = parser.parse();
System.out.println(root.toStringTree(parser));
}
}
EOF
# Compile all java source files
javac -cp "$ANTLR_JAR" *.java
# Run the Main class
java -cp .:"$ANTLR_JAR" Main
并运行它。它将打印:
(parse t e s t <EOF>)