| 今天,一直在摸索可执行的jar文件的制作,按照从网上搜索得来的"手动制作可执行JAR的方法",那么去做,总是得到下面的错误,百思不得其解.自己摸索了好久,打开J2SDK的关于JAR的文档看了看(相对于本地机器J2SDK的安装位置docs/tooldocs/windows/jar.html中),做了试验才发现不是像有些文档那么简单的说只要"Main-class : package.主执行文件",就可以了!其实,最重要的是要在manifest.mf文件中加入"Main-class :"后留一空行或者直接在"Class-Path"这个属性中指明package的名! |
Manifest.mf(不加Class-Path属性)Main-Class: execute.j0001 <---一定要在手工建立manifest.mf时留有空行或者加入Class-Path属性 |
|
| 否则,在建立了jar包后,使用"Java -jar jar包名"时,会出现如下的错误! |
d:java>java -jar myjarfile.jar failed to load main-class manifest attribute from myjarfile.jar |
|
| 我们就简单以Hello,Java World举例说明一下吧! |
desc.java//desc.java //通过继承类来重设desc中的函数达到description this program 的目的 package execute; public class desc { //public String desc=""; public desc()//Constructor { } public void ds(String filename,String desc)//该方法用于为调用该方法的程序输出 { //一段说明 System.out.println("====================n"); System.out.println("FileName: "+filename+"n"); System.out.println("FileDesc: "+desc+"n"); System.out.println("====================n"); } }
|
|
j0001.javapackage execute; import execute.*; //can execute class //可以执行的类
public class j0001 //extends desc { public static void main(String[] args) { desc fileds = new desc(); fileds.ds("j0001.java","inherit class"); System.out.println("Hello,Java World!"); } }
|
|
Manifest.mf(加Class-Path属性)Created-By: macleo Main-Class: execute.j0001 Class-Path: execute
|
|
在DOS提示符的方式下输入d:java>jar cvmf manifest.mf test.jar execute 标明清单(manifest) 增加:execute/(读入= 0) (写出= 0)(存储了 0%) 增加:execute/desc.class(读入= 712) (写出= 411)(压缩了 42%) 增加:execute/j0001.class(读入= 550) (写出= 361)(压缩了 34%) d:java> d:java>java -jar test.jar ====================
FileName: j0001.java
FileDesc: inherit class
====================
Hello, Java World!
|
|
| 呵呵,体会到了成功的喜悦了吧?! ^_^/ 好,我们这下大概知道了"executable Jar file"的制作了! |