java - 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,但是当我尝试运行脚本时,我遇到了这个错误:
我不确定如何解决此错误。
解决方案
如评论中所述,您同时使用-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
推荐阅读
- c++ - 是`boost::function
f`是指针还是对象? - javascript - 删除列 css 网格中的间隙
- angular - 在 firestore 中更新文档会使结果列表变为初始形式
- next.js - 如何在 chakra ui 中自定义盒子大小?
- wordpress - twitterbot/1.0 导致高 CPU 和 Ra
- scala - libraryDependencies Spark in build.sbt 错误(IntelliJ)
- python - 具有多个模块的 Python 扩展
- javascript - 使用 .add() jQuery 方法将 div 添加到元素
- javascript - Iterating through list of on keydown event by pressing down and up key
- python - python - Where do I check for valid input in my rock paper scissors game