踩过的“坑”: 命令行指定Java class path

2014.7.24 上午

  写了一个最简单的Java class

1 public class Hello{
2     public static void main(String[]args){
3     System.out.println("Hello,java");
4     }
5 }

然后用gradle编译打包成jar文件,运行

java Hello -cp test.jar 

报错

Exception in thread "main" java.lang.NoClassDefFoundError: Hello
Caused by: java.lang.ClassNotFoundException: Hello
    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:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

jar tvf test.jar。很明显Hello.class存在于jar中。

     0 Thu Jul 24 11:27:00 CST 2014 META-INF/
    25 Thu Jul 24 11:27:00 CST 2014 META-INF/MANIFEST.MF
   517 Thu Jul 24 11:26:56 CST 2014 Hello.class

非常诡异,google半天无发现。然后灵机一动,调整了参数顺序:

java -cp ScalaTest.jar Hello

成功。。。。。。

对这种命令行无力吐槽。

原文地址:https://www.cnblogs.com/linghuaichong/p/3865203.html