我正在通过一个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