[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

javac - error: package org.antlr.v4.runtime does not exist



Dear all,

I apologise in advance for asking what might be an ignorant question,
but it has been ages since I used Java for anything and so my Java
troubleshooting skills are currently rusty/nonexistent.

On a box running Debian Stretch (oldstable), I am trying to compile an
Antlr4 lexer & parser.  The first step (generating the lexer & parser
.java files from .g4 files) works fine, but the second step (compiling
the the lexer & parser) does not.  Here's the first step:

    $ mkdir /tmp/antlr-test
    $ cd $_
    $ wget --page-requisites --recursive --level=inf --convert-links \
    --no-parent \
    https://www.cs.cornell.edu/courses/cs4120/2013fa/handouts/antlr.html
    $ cd www.cs.cornell.edu/courses/cs4120/2013fa/handouts/xi
    $ ls -1
    hello.xi
    XiLexer.g4
    XiParser.g4
    $ antlr4 XiLexer.g4 XiParser.g4 -no-listener ; echo $?
    0
    $ ls -1
    hello.xi
    XiLexer.g4
    XiLexer.java
    XiLexer.tokens
    XiParser.g4
    XiParser.java
    XiParser.tokens

All fine so far, as you can see.  Now the second step:

    $ javac Xi*.java
    XiLexer.java:2: error: package org.antlr.v4.runtime does not exist
    import org.antlr.v4.runtime.Lexer;
                               ^
    [SNIP - for full output, see attached file.]
    100 errors

Oh dear.  What to do?

The [Antlr4
FAQ](https://github.com/antlr/antlr4/blob/master/doc/faq/installation.md_
says, "If you see these kinds of errors, it's because you don't have the
runtime or complete ANTLR library in your CLASSPATH."

I installed Antlr4 via `sudo apt install antlr4` and I installed javac
via `sudo apt install default-jdk` so I would hope that Antlr4 is
reachable by javac, but in case not, I tried manually populating the
CLASSPATH environment variable with the same contents found in the
antlr4 executable, before running javac again:

    $ cat /usr/bin/antlr4
    #!/bin/sh

    CLASSPATH=/usr/share/java/stringtemplate4.jar:/usr/share/java/antlr4.jar:/usr/share/java/antlr4-runtime.jar:/usr/share/java/antlr3-runtime.jar/:/usr/share/java/treelayout.jar
    exec java -cp $CLASSPATH org.antlr.v4.Tool "$@"
    $ CLASSPATH='.'
    $ CLASSPATH+=':/usr/share/java/stringtemplate4.jar'
    $ CLASSPATH+=':/usr/share/java/antlr4.jar'
    $ CLASSPATH+=':/usr/share/java/antlr4-runtime.jar'
    $ CLASSPATH+=':/usr/share/java/antlr3-runtime.jar/'
    $ CLASSPATH+=':/usr/share/java/treelayout.jar"; javac Xi*.java
    XiLexer.java:2: error: package org.antlr.v4.runtime does not exist
    import org.antlr.v4.runtime.Lexer;
                               ^
    [SNIP - for full output, see attached file.]
    100 errors

No improvement :(

So my question is: how can I make the `javac Xi*.java` command succeed,
*without* having to fall back on a non-Debian-provided Antlr4
installation?

(Two examples of non-Debian-provided Antlr4 installation would be: a
.jar produced by me cloning and building
https://github.com/antlr/antlr4; or if I downloaded this .jar:
https://www.antlr.org/download/antlr-4.7.1-complete.jar ).

Thanks in advance for any help you can provide!

Sam

-- 
A: When it messes up the order in which people normally read text.
Q: When is top-posting a bad thing?

()  ASCII ribbon campaign. Please avoid HTML emails & proprietary
/\  file formats. (Why? See e.g. https://v.gd/jrmGbS ). Thank you.
XiLexer.java:2: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.Lexer;
                           ^
XiLexer.java:3: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.CharStream;
                           ^
XiLexer.java:4: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.Token;
                           ^
XiLexer.java:5: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.TokenStream;
                           ^
XiLexer.java:6: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.*;
^
XiLexer.java:7: error: package org.antlr.v4.runtime.atn does not exist
import org.antlr.v4.runtime.atn.*;
^
XiLexer.java:8: error: package org.antlr.v4.runtime.dfa does not exist
import org.antlr.v4.runtime.dfa.DFA;
                               ^
XiLexer.java:9: error: package org.antlr.v4.runtime.misc does not exist
import org.antlr.v4.runtime.misc.*;
^
XiLexer.java:12: error: cannot find symbol
public class XiLexer extends Lexer {
                             ^
  symbol: class Lexer
XiLexer.java:15: error: cannot find symbol
	protected static final DFA[] _decisionToDFA;
	                       ^
  symbol:   class DFA
  location: class XiLexer
XiLexer.java:16: error: cannot find symbol
	protected static final PredictionContextCache _sharedContextCache =
	                       ^
  symbol:   class PredictionContextCache
  location: class XiLexer
XiLexer.java:49: error: cannot find symbol
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
	                    ^
  symbol:   class Vocabulary
  location: class XiLexer
XiLexer.java:78: error: cannot find symbol
	public Vocabulary getVocabulary() {
	       ^
  symbol:   class Vocabulary
  location: class XiLexer
XiLexer.java:83: error: cannot find symbol
	public XiLexer(CharStream input) {
	               ^
  symbol:   class CharStream
  location: class XiLexer
XiLexer.java:101: error: cannot find symbol
	public ATN getATN() { return _ATN; }
	       ^
  symbol:   class ATN
  location: class XiLexer
XiLexer.java:166: error: cannot find symbol
	public static final ATN _ATN =
	                    ^
  symbol:   class ATN
  location: class XiLexer
XiParser.java:2: error: package org.antlr.v4.runtime.atn does not exist
import org.antlr.v4.runtime.atn.*;
^
XiParser.java:3: error: package org.antlr.v4.runtime.dfa does not exist
import org.antlr.v4.runtime.dfa.DFA;
                               ^
XiParser.java:4: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.*;
^
XiParser.java:5: error: package org.antlr.v4.runtime.misc does not exist
import org.antlr.v4.runtime.misc.*;
^
XiParser.java:6: error: package org.antlr.v4.runtime.tree does not exist
import org.antlr.v4.runtime.tree.*;
^
XiParser.java:12: error: cannot find symbol
public class XiParser extends Parser {
                              ^
  symbol: class Parser
XiParser.java:15: error: cannot find symbol
	protected static final DFA[] _decisionToDFA;
	                       ^
  symbol:   class DFA
  location: class XiParser
XiParser.java:16: error: cannot find symbol
	protected static final PredictionContextCache _sharedContextCache =
	                       ^
  symbol:   class PredictionContextCache
  location: class XiParser
XiParser.java:43: error: cannot find symbol
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
	                    ^
  symbol:   class Vocabulary
  location: class XiParser
XiParser.java:72: error: cannot find symbol
	public Vocabulary getVocabulary() {
	       ^
  symbol:   class Vocabulary
  location: class XiParser
XiParser.java:86: error: cannot find symbol
	public ATN getATN() { return _ATN; }
	       ^
  symbol:   class ATN
  location: class XiParser
XiParser.java:88: error: cannot find symbol
	public XiParser(TokenStream input) {
	                ^
  symbol:   class TokenStream
  location: class XiParser
XiParser.java:92: error: cannot find symbol
	public static class FileContext extends ParserRuleContext {
	                                        ^
  symbol:   class ParserRuleContext
  location: class XiParser
XiParser.java:231: error: cannot find symbol
	public final FileContext file() throws RecognitionException {
	                                       ^
  symbol:   class RecognitionException
  location: class XiParser
XiParser.java:275: error: cannot find symbol
	public static final ATN _ATN =
	                    ^
  symbol:   class ATN
  location: class XiParser
XiParser.java:93: error: cannot find symbol
		public List<TerminalNode> STRING() { return getTokens(XiParser.STRING); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:94: error: cannot find symbol
		public TerminalNode STRING(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:97: error: cannot find symbol
		public List<TerminalNode> BOOL() { return getTokens(XiParser.BOOL); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:98: error: cannot find symbol
		public TerminalNode BOOL(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:101: error: cannot find symbol
		public List<TerminalNode> INT() { return getTokens(XiParser.INT); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:102: error: cannot find symbol
		public TerminalNode INT(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:105: error: cannot find symbol
		public List<TerminalNode> RETURN() { return getTokens(XiParser.RETURN); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:106: error: cannot find symbol
		public TerminalNode RETURN(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:109: error: cannot find symbol
		public List<TerminalNode> WHILE() { return getTokens(XiParser.WHILE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:110: error: cannot find symbol
		public TerminalNode WHILE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:113: error: cannot find symbol
		public List<TerminalNode> IF() { return getTokens(XiParser.IF); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:114: error: cannot find symbol
		public TerminalNode IF(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:117: error: cannot find symbol
		public List<TerminalNode> ELSE() { return getTokens(XiParser.ELSE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:118: error: cannot find symbol
		public TerminalNode ELSE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:121: error: cannot find symbol
		public List<TerminalNode> LENGTH() { return getTokens(XiParser.LENGTH); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:122: error: cannot find symbol
		public TerminalNode LENGTH(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:125: error: cannot find symbol
		public List<TerminalNode> BREAK() { return getTokens(XiParser.BREAK); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:126: error: cannot find symbol
		public TerminalNode BREAK(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:129: error: cannot find symbol
		public List<TerminalNode> TRUE() { return getTokens(XiParser.TRUE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:130: error: cannot find symbol
		public TerminalNode TRUE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:133: error: cannot find symbol
		public List<TerminalNode> FALSE() { return getTokens(XiParser.FALSE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:134: error: cannot find symbol
		public TerminalNode FALSE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:137: error: cannot find symbol
		public List<TerminalNode> ID() { return getTokens(XiParser.ID); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:138: error: cannot find symbol
		public TerminalNode ID(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:141: error: cannot find symbol
		public List<TerminalNode> INTEGER() { return getTokens(XiParser.INTEGER); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:142: error: cannot find symbol
		public TerminalNode INTEGER(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:145: error: cannot find symbol
		public List<TerminalNode> LBRACKET() { return getTokens(XiParser.LBRACKET); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:146: error: cannot find symbol
		public TerminalNode LBRACKET(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:149: error: cannot find symbol
		public List<TerminalNode> RBRACKET() { return getTokens(XiParser.RBRACKET); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:150: error: cannot find symbol
		public TerminalNode RBRACKET(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:153: error: cannot find symbol
		public List<TerminalNode> COLON() { return getTokens(XiParser.COLON); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:154: error: cannot find symbol
		public TerminalNode COLON(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:157: error: cannot find symbol
		public List<TerminalNode> EQUAL() { return getTokens(XiParser.EQUAL); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:158: error: cannot find symbol
		public TerminalNode EQUAL(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:161: error: cannot find symbol
		public List<TerminalNode> LPAREN() { return getTokens(XiParser.LPAREN); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:162: error: cannot find symbol
		public TerminalNode LPAREN(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:165: error: cannot find symbol
		public List<TerminalNode> RPAREN() { return getTokens(XiParser.RPAREN); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:166: error: cannot find symbol
		public TerminalNode RPAREN(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:169: error: cannot find symbol
		public List<TerminalNode> COMMA() { return getTokens(XiParser.COMMA); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:170: error: cannot find symbol
		public TerminalNode COMMA(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:173: error: cannot find symbol
		public List<TerminalNode> SEMICOLON() { return getTokens(XiParser.SEMICOLON); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:174: error: cannot find symbol
		public TerminalNode SEMICOLON(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:177: error: cannot find symbol
		public List<TerminalNode> LBRACE() { return getTokens(XiParser.LBRACE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:178: error: cannot find symbol
		public TerminalNode LBRACE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:181: error: cannot find symbol
		public List<TerminalNode> RBRACE() { return getTokens(XiParser.RBRACE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:182: error: cannot find symbol
		public TerminalNode RBRACE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:185: error: cannot find symbol
		public List<TerminalNode> STAR() { return getTokens(XiParser.STAR); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:186: error: cannot find symbol
		public TerminalNode STAR(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:189: error: cannot find symbol
		public List<TerminalNode> SLASH() { return getTokens(XiParser.SLASH); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:190: error: cannot find symbol
		public TerminalNode SLASH(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:193: error: cannot find symbol
		public List<TerminalNode> PERCENT() { return getTokens(XiParser.PERCENT); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:194: error: cannot find symbol
		public TerminalNode PERCENT(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:197: error: cannot find symbol
		public List<TerminalNode> PLUS() { return getTokens(XiParser.PLUS); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:198: error: cannot find symbol
		public TerminalNode PLUS(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:201: error: cannot find symbol
		public List<TerminalNode> DASH() { return getTokens(XiParser.DASH); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:202: error: cannot find symbol
		public TerminalNode DASH(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:205: error: cannot find symbol
		public List<TerminalNode> LANGLE() { return getTokens(XiParser.LANGLE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:206: error: cannot find symbol
		public TerminalNode LANGLE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:209: error: cannot find symbol
		public List<TerminalNode> RANGLE() { return getTokens(XiParser.RANGLE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:210: error: cannot find symbol
		public TerminalNode RANGLE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:213: error: cannot find symbol
		public List<TerminalNode> BANG() { return getTokens(XiParser.BANG); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:214: error: cannot find symbol
		public TerminalNode BANG(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:217: error: cannot find symbol
		public List<TerminalNode> AMPERSAND() { return getTokens(XiParser.AMPERSAND); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:218: error: cannot find symbol
		public TerminalNode AMPERSAND(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:221: error: cannot find symbol
		public List<TerminalNode> PIPE() { return getTokens(XiParser.PIPE); }
		            ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:222: error: cannot find symbol
		public TerminalNode PIPE(int i) {
		       ^
  symbol:   class TerminalNode
  location: class FileContext
XiParser.java:225: error: cannot find symbol
		public FileContext(ParserRuleContext parent, int invokingState) {
		                   ^
  symbol:   class ParserRuleContext
  location: class FileContext
XiLexer.java:13: error: cannot find symbol
	static { RuntimeMetaData.checkVersion("4.5.3", RuntimeMetaData.VERSION); }
	                                               ^
  symbol:   variable RuntimeMetaData
  location: class XiLexer
XiLexer.java:13: error: cannot find symbol
	static { RuntimeMetaData.checkVersion("4.5.3", RuntimeMetaData.VERSION); }
	         ^
  symbol:   variable RuntimeMetaData
  location: class XiLexer
100 errors

Reply to: