首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行java -cp antlr4-4.0.jar org.anlr.v4.Tool

无法运行java -cp antlr4-4.0.jar org.anlr.v4.Tool
EN

Stack Overflow用户
提问于 2013-06-02 19:40:14
回答 2查看 4.7K关注 0票数 3
代码语言:javascript
复制
<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>

我使用Ivy并使用ant脚本将上面的依赖jars下载到lib目录中。antlr4-4.0.jar就是其中一个依赖项。但当我在终端中执行此操作时:

代码语言:javascript
复制
 java -cp antlr4-4.0.jar org.antlr.v4.Tool

我得到了这个例外:

代码语言:javascript
复制
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

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-03 16:59:56

多亏了earcam,我解决了这个问题,我把所有的依赖项添加到类路径中,以:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2013-06-03 17:35:42

另一种选择是使用ivy作为standalone jar来启动antl4r:

代码语言:javascript
复制
$ 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

创建一个别名,您就有了一种自动启动antlr4的机制:

代码语言:javascript
复制
alias antlr4='java -jar ivy-2.3.0.jar -dependency org.antlr antlr4 4.0 -confs default -warn -main org.antlr.v4.Tool -args'

这种方法唯一的缺点是传递选项的效果不是很好:-(

代码语言:javascript
复制
antlr4 Hello.g4 -o test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16882392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档