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

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



javac -cp $CLASSPATH Xi*.java maybe ?

Raphael

----- Mail original -----
De: "Sam Kuper" <sampablokuper@posteo.net>
À: "ML debian-java" <debian-java@lists.debian.org>
Envoyé: Jeudi 9 Juillet 2020 02:19:10
Objet: 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.


Reply to: