Amr Kamel
Amr Kamel

Reputation: 432

Can't run java -cp antlr4-4.0.jar org.anlr.v4.Tool

<dependencies>
    <dependency org="org.apache.commons" name="commons-math3" rev="3.2"/>
    <dependency org="org.antlr" name="antlr4" rev="4.0"/>
    <dependency org="org.antlr" name="antlr4-runtime" rev="4.0"/>
    <dependency org="org.antlr" name="antlr4-master" rev="4.0"/>
</dependencies>

i used Ivy using an ant script to download the dependency jars above in lib directory. antlr4-4.0.jar is one of these dependencies. But when i do this in the terminal:

 java -cp antlr4-4.0.jar org.antlr.v4.Tool

I get this exception:

Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/v4/runtime     /misc/ParseCancellationException
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:787)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:447)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
    at java.lang.Class.getMethod0(Class.java:2694)
    at java.lang.Class.getMethod(Class.java:1622)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.antlr.v4.runtime.misc.ParseCancellationException
    ... 25 more

What am I doing wrong?

Upvotes: 3

Views: 5524

Answers (2)

Mark O&#39;Connor
Mark O&#39;Connor

Reputation: 78001

Another option is use ivy as a standalone jar to launch antl4r:

$ java -jar ivy-2.3.0.jar -dependency org.antlr antlr4 4.0 -confs default -warn -main org.antlr.v4.Tool
ANTLR Parser Generator  Version 4.0
 -o ___              specify output directory where all output is generated
 -lib ___            specify location of grammars, tokens files
 -atn                generate rule augmented transition network diagrams
 -encoding ___       specify grammar file encoding; e.g., euc-jp
 -message-format ___ specify output style for messages in antlr, gnu, vs2005
 -long-messages      show exception details when available for errors and warnings
 -listener           generate parse tree listener (default)
 -no-listener        don't generate parse tree listener
 -visitor            generate parse tree visitor
 -no-visitor         don't generate parse tree visitor (default)
 -package ___        specify a package/namespace for the generated code
 -depend             generate file dependencies
 -D<option>=value    set/override a grammar-level option
 -Werror             treat warnings as errors
 -XdbgST             launch StringTemplate visualizer on generated code
 -XdbgSTWait         wait for STViz to close before continuing
 -Xforce-atn         use the ATN simulator for all predictions
 -Xlog               dump lots of logging info to antlr-timestamp.log

Create an alias and you have a mechanism to launching antlr4 automatically:

alias antlr4='java -jar ivy-2.3.0.jar -dependency org.antlr antlr4 4.0 -confs default -warn -main org.antlr.v4.Tool -args'

The only downside to this approach is passing options doesn't work very well :-(

antlr4 Hello.g4 -o test

Upvotes: 0

Amr Kamel
Amr Kamel

Reputation: 432

thanks to earcam i solved the problem i did it by adding all the dependencies to the classpath seperated by :

java -cp lib/antlr4-4.0.jar:lib/antlr4-runtime-4.0.jar:lib/stringtemplate-3.2.1.jar:lib/ST4-4.0.7.jar:lib/antlr-runtime-3.5.jar org.antlr.v4.Tool

Upvotes: 2

Related Questions