当前位置: 首页 > 知识库问答 >
问题:

当使用output directory-o选项时,TestRig/grun删除java.lang.NoClassDefoundError

冯永长
2023-03-14

在这篇文章之后,我将使用以下步骤从这个存储库中编译解析器/lexer:

export CLASSPATH=".:/usr/local/Cellar/antlr/&ltversion>/antlr-&ltversion>-complete.jar:$CLASSPATH"
antlr &ltgrammarName>.g4 -o &ltsomeFolder>/
javac &ltsomeFolder>/&ltgrammarName>*.java

但当我使用这里的说明时:

grun <someFolder>/<grammarName> tokens -tokens < <inputFile>
Exception in thread "main" java.lang.NoClassDefFoundError: IllegalName: &ltsomeFolder>/&ltgrammarName&gtLexer
    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)

如果你能帮助我知道是什么问题以及我能如何解决它,我将不胜感激。

共有1个答案

程仲卿
2023-03-14

我看不出您在哪里指定了包名,所以现在您的Java类位于 中。请务必在该文件夹中编译它们。

那么您需要将该文件夹添加到您的类路径中(可能不是“.”)

尝试将 添加到要导出的类路径中。然后将其从grun命令行中删除。

您可以修改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数据。 我必须清除所有存储的数据当应用程序关闭。