首页 > 解决方案 > ANTLR v4 运行时 Java 包无法识别

问题描述

我正在尝试使用 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,但是当我尝试运行脚本时,我遇到了这个错误:

在此处输入图像描述

我不确定如何解决此错误。

标签: javaantlrantlr4

解决方案


如评论中所述,您同时使用-classpath-cp:不要。只需使用其中之一。

编译里面的所有Java源文件./out(其中一些依赖于ANTLR运行时)可以如下完成:

Linux 和 Mac 操作系统

javac -cp .:out:antlr-4.9.2-complete.jar out/*.java

视窗

javac -cp .;out;antlr-4.9.2-complete.jar out\*.java

推荐阅读