我正在通過一個ANTLR(一種語言處理庫)書,並且有很多例子,應該使用命令行很容易編譯。執行類時未找到罐子
一些信息,以獲得TE問題:
antlr-3.2.jar
包含庫類。我將antlr-3.2.jar
添加到CLASSPATH
環境變量(Windows 7)中,並且在編譯javac
時一切正常。 這是我執行編譯我的程序:
javac Test.java ExprLexer.java ExprParser.java
Test.java
包含我main()
- 方法而ExprLexer
和ExprParser
由ANTLR生成。所有三個班級都使用antlr-3.2.jar
中包含的班級。但迄今爲止這麼好。正如我剛纔所說,編譯工作正常。
這是當我嘗試執行我遇到麻煩的Test.class
。 這是I型:
java -cp ./ Test
當執行此,翻譯告訴我,他無法找到包含在antlr-3.2.jar
的ANTLR類,altough我加在CLASSPATH
變量的條目。
Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/runtime/Cha
rStream
Caused by: java.lang.ClassNotFoundException: org.antlr.runtime.CharStream
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Test. Program will exit.
我使用Windows 7和Java 1.6_20。有人可以告訴發生了什麼事嗎?爲什麼口譯員不會在CLASSPATH
中指定的jar中存檔?
我發現了一些workaroud。我將antlr-3.2.jar複製到Test.class所在的目錄中,然後執行:
java -cp ./;antlr-3.2.jar Test
這解決了。但是我不想每次執行我的測試程序時輸入jar-Archive。是否有可能告訴口譯員他應該自動查看檔案?
Ahhhhh! :) 謝謝! – Simon 2010-05-28 18:09:06