执行类时找不到jar

Sim*_*mon 4 java command-line classpath

我正在编写一本ANTLR(一个语言处理库)书,有很多例子应该很容易使用命令行编译.

有些信息可以解决问题:

antlr-3.2.jar包含库类.我添加antlr-3.2.jarCLASSPATH环境变量(Windows 7)和编译类时,javac一切正常.这是我执行编译我的程序:

javac Test.java ExprLexer.java ExprParser.java
Run Code Online (Sandbox Code Playgroud)

Test.java包含my main()-method,ExprLexer而且ExprParser由ANTLR生成.这三个类都使用包含在中的类antlr-3.2.jar.但到目前为止这么好.正如我刚才所说,编译工作正常.

当我试图执行Test.class那个我遇到麻烦的时候.这是我输入的内容:

java -cp ./ Test
Run Code Online (Sandbox Code Playgroud)

执行此操作时,解释器告诉我他找不到包含在其中的ANTLR类antlr-3.2.jar,尽管我在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.
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows 7和Java 1.6_20.有人能说出发生了什么吗?为什么解释器不会在jar中找到我在Archive中指定的CLASSPATH

我找到了某种工作方式.我将antlr-3.2.jar复制到Test.class所在的目录中,然后执行:

java -cp ./;antlr-3.2.jar Test
Run Code Online (Sandbox Code Playgroud)

这样就解决了.但是每次执行测试程序时我都不想输入jar-Archive.是否有可能告诉口译员他应该自动查看档案?

Bre*_*ail 5

我正在使用Windows 7和Java 1.6_20.有人能说出发生了什么吗?为什么解释器不会查看我在CLASSPATH中指定的jar-Archive?

命令行上的-cp覆盖CLASSPATH变量.没有方便的方法来做你想做的事情.如果您不想每次都输入完整的类路径,我建议您创建一个ant脚本,shell脚本或shell别名.