私はANTLR 4を学習しようとしていますが、で与えられた例に従っています。ANTLR 4リファレンス。悲しいことに、私は最初の例で立ち往生しています。ANTLR4 TestRig(grun)はjava.lang.NoClassDefFoundError例外をスローします
システム:10(1703)
のWindows
のJava 8、151
ANTLR 4、V4.7を更新
マイ%CLASSPATH%
システム変数(.;"D:\Program Files\Java\libs\antlr-4.7-complete.jar";
)として設定されています。
%PATH%
にはantlr4.bat
とgrun.bat
があり、コマンドラインからantlr4
を実行できます。
antlr4.bat
:java -cp %CLASSPATH% org.antlr.v4.Tool %*
grun.bat
:java -cp %CLASSPATH% org.antlr.v4.gui.TestRig %*
私は-cp
オプションを使用しない場合、いくつかの他の人が問題を抱えて見てきたので、私は明示的に-cp %CLASSPATH%
を使用しています。
私の問題はこれです:
私は例の文法Hello
(grun Hello r -tokens
)私は、このエラーメッセージ
Exception in thread "main" java.lang.NoClassDefFoundError: HelloLexer (wrong name: main/resource/hello/HelloLexer)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.antlr.v4.gui.TestRig.process(TestRig.java:129)
at org.antlr.v4.gui.TestRig.main(TestRig.java:119)
私が間違ってやっているものに任意のアイデアを得る上でgrun
を実行すると?
事前に感謝します!
EDIT:
私は答えを見つけたと思いました。 cd
コンパイルされたファイルが(ルートプロジェクトフォルダからgrun
を呼び出すのではなく)フォルダーに入ったので、問題の例を調べることができました。
私自身のプロジェクトをセットアップしようとしたとき、私は上記と同じエラーメッセージを出して同じ問題に遭遇しました。
今度は、を-package
オプションで実行した後、grun
が不満を表明しているようです。
これはなぜですか?
あなたはgradleプロジェクトとして設定することで何を意味するのか教えてください。 –