在 Java 中将 ANTLR 添加到类路径时出现问题:“package org.antlr.v4.runtime.tree 不存在”

问题描述 投票:0回答:1

我在将 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代码]

environment-variables classpath antlr antlr4
1个回答
0
投票

将以下内容粘贴到 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>)
© www.soinside.com 2019 - 2024. All rights reserved.