在这篇文章之后,我将使用以下步骤从这个存储库中编译解析器/lexer:
export CLASSPATH=".:/usr/local/Cellar/antlr/<version>/antlr-<version>-complete.jar:$CLASSPATH" antlr <grammarName>.g4 -o <someFolder>/ javac <someFolder>/<grammarName>*.java
但当我使用这里的说明时:
grun <someFolder>/<grammarName> tokens -tokens < <inputFile>
Exception in thread "main" java.lang.NoClassDefFoundError: IllegalName: <someFolder>/<grammarName>Lexer at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:889) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1014) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:825) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:723) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:646) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at org.antlr.v4.gui.TestRig.process(TestRig.java:129) at org.antlr.v4.gui.TestRig.main(TestRig.java:119)
如果你能帮助我知道是什么问题以及我能如何解决它,我将不胜感激。
我看不出您在哪里指定了包名,所以现在您的Java类位于
那么您需要将该文件夹添加到您的类路径中(可能不是“.”)
尝试将
您可以修改grun
别名,以允许您指定一个目录来搜索您的类,并在Java命令上使用-cp
选项,但这可能比将它添加到您用于本次测试的类路径中更麻烦。
我正在努力学习ANTLR4,并遵循ANTLR4权威参考中给出的示例。可悲的是,我被第一个例子卡住了。 系统: Windows 10(1703) Java 8,更新151 ANTLR 4,V4.7 我的问题是: 当我对示例语法()运行时,我会得到以下错误消息 对我做错了什么有什么想法吗? 非常感谢! 编辑: 我以为我找到了答案。通过-ing到编译文件所在的文件夹(而不是从根项目文件夹调用),我设法完
在ANTLR执行之后,我将所有生成的java文件都放在一个目录中,因此我使用了一些选项来生成一个单独的目录和名称空间,以存储和编译所有生成的文件。 这是语法文件: 语法表达式; 我可以使用在不同的目录中获取生成的文件,并使用选项添加包信息。 编译代码需要中的和选项。 我可以通过制作可执行文件来检查代码是否有效。 我可以构建和运行它。 这是目录结构。 如何对位于其他目录中的ANTLR文件运行grun
问题内容: 我是AngularJS的新手。我进行了很多搜索,但是并不能解决我的问题。 我第一次在选择框中得到一个空白选项。 这是我的HTML代码 JS 但这似乎不起作用。我该如何解决?这是JSFiddle演示 问题答案: 当传递给的一组选项中不存在被引用的值时,将生成空值。这样做是为了防止意外选择模型:AngularJS可以看到初始模型是未定义的还是未在选项集中,并且不想自行决定模型的值。 简而言
我有一个复选框,其中有一对项目,当我单击该复选框时,该项目将添加到名为currentDevice的状态,但当我取消选中该项目时,它将保留“添加项目”,而不是删除它。 当我取消选中该框时,如何从状态中删除项。Im使用“反应本机元素”复选框。谢谢你 代码:
问题内容: 我正在尝试做这样的事情: 好像MySQL不允许我在嵌套SELECT中使用。有什么建议吗? 问题答案: 您可能会收到此错误: 您应该能够使用MySQL的多表语法来做到这一点: 上面的查询应该可以工作,但是作为一般规则,我建议使用ANSI JOIN语法代替:
在我的应用程序中,我存储了一些SharedPreference数据。 我必须清除所有存储的数据当应用程序关闭。