我正在读一本ANTLR(语言处理库)的书,有很多例子
应该
使用命令行易于编译。
一些关于解决问题的信息:
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
我有麻烦了。
这是我键入的:
java -cp ./ Test
在执行此操作时,解释器告诉我他找不到包含在
ANTLR 3.2.JAR
,尽管我在
类路径
变量。
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和Java1.620。有人能告诉我发生了什么事吗?为什么解释程序不在我在
类路径
?
我找到了一些解决办法。我将antlr-3.2.jar复制到test.class所在的目录中,然后执行:
java -cp ./;antlr-3.2.jar Test
这样就行了。但我不想每次执行测试程序时都输入JAR存档。有没有可能告诉口译员他应该自动查看档案?