踩过的“坑”: 命令行指定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
成功。。。。。。
对这种命令行无力吐槽。