Sim*_*mon 4 java command-line classpath
我正在编写一本ANTLR(一个语言处理库)书,有很多例子应该很容易使用命令行编译.
有些信息可以解决问题:
antlr-3.2.jar包含库类.我添加antlr-3.2.jar到CLASSPATH环境变量(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.是否有可能告诉口译员他应该自动查看档案?
我正在使用Windows 7和Java 1.6_20.有人能说出发生了什么吗?为什么解释器不会查看我在CLASSPATH中指定的jar-Archive?
命令行上的-cp覆盖CLASSPATH变量.没有方便的方法来做你想做的事情.如果您不想每次都输入完整的类路径,我建议您创建一个ant脚本,shell脚本或shell别名.
| 归档时间: |
|
| 查看次数: |
7399 次 |
| 最近记录: |