eclipse中export 的jar file与 runnable jar file的区别

(1)直接运行 .class的方法     java  -cp .  com.guangfa.demo1  , 不用加.class后缀 .-cp 是 -classpath 缩写,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号";"

(2)从eclipse中export 的jar file,仅仅是把.class打包了。所以执行这种jar file需要用 java -cp .;demo1.jar com.guangfa.demo1, 如果还应用到另外的lib库,必须在cp里说明,也就是  
java -cp .;demo1.jar;lib01.jar;lib02.jar com.guangfa.demo1 来执行。demo1.jar也在cp里面,demo1.jar就是lib库,最后的参数指明了要被执行的类名。

(2)如果从eclipse里export出的是 runnable jar file,那么个执行这个jar包的时候是不需要指明哪个类的,直接这样执行 java -jar demo1.jar。
原因就是jar包中的MANIFEST.MF内容不同。 runnable jar包中指明哪个类先执行,所以你可以用 java -jar demo1.jar来执行你想要执行的代码,而不必指明具体哪个类。
这个你可以打开 jar包查看MANIFEST.MF的区别。

jar file                                                                                 runnable jar file  

  

     生成runnable jar file时,有两个选项,Extract required libraries into generated JAR 和 package equired libraries into generated JAR。 前者是把用到的.class 文件提取出来,后者则是把所需要的所有jar包都打进一个包里。两者的MANIFEST.MF文件内容也有所不同,这应该是eclipse造成的。

原文地址:https://www.cnblogs.com/wqbin/p/11128581.html