Antlr4 编译示例ANTR4输出

Antlr4 编译示例ANTR4输出,antlr4,Antlr4,根据权威的ANTLR4参考,我已经运行了第一个示例,它已经生成了JAVA目标。在目录C:\JavaLib中,我有antlr-4.5-complete.jar 当我试图用 javac -classpath C:\JavaLib *.java 它会创建以下错误消息 helloBaseListener.java:13: error: class HelloBaseListener is public, should be declared in a file named HelloBaseListe

根据权威的ANTLR4参考,我已经运行了第一个示例,它已经生成了JAVA目标。在目录C:\JavaLib中,我有antlr-4.5-complete.jar 当我试图用

javac -classpath C:\JavaLib *.java
它会创建以下错误消息

helloBaseListener.java:13: error: class HelloBaseListener is public, should be declared in a file named HelloBaseListener.java
public class HelloBaseListener implements HelloListener {
   ^
helloListener.java:9: error: class HelloListener is public, should be declared in a file named HelloListener.java
public interface HelloListener extends ParseTreeListener {
   ^
helloParser.java:12: error: class HelloParser is public, should be declared in a file named HelloParser.java
public class HelloParser extends Parser {
   ^
helloBaseListener.java:3: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.ParserRuleContext;
                       ^
helloBaseListener.java:4: error: package org.antlr.v4.runtime.misc does not exist
import org.antlr.v4.runtime.misc.NotNull;
                            ^
helloBaseListener.java:5: error: package org.antlr.v4.runtime.tree does not exist
import org.antlr.v4.runtime.tree.ErrorNode;
....

我做错了什么?

有两个问题。一个是文件必须命名为“Hello.g4”而不是“Hello.g4”,因为语法被指定为Hello。第二个是类路径,它需要jar文件的路径和名称,以及当前目录。以下命令起作用

javac -classpath .;C:\JavaLib\antlr-4.5-complete.jar *.java

关于上述关于冒号分隔符的查询,答案是肯定的。我通过debian软件包进行安装,并在确定如何设置类路径之前使用了该命令

javac -classpath /usr/share/java/antlr4-runtime.jar  Expr*.java

在此之前,我遇到了大量的编译错误。另外,目前在debian上似乎值得注意的是,我的.bash_配置文件从未加载,因此我需要将其放入.bashrc

我是否正确地假设在Linux系统上需要使用冒号分隔符而不是分号?