java中通过JDK工具手动压缩JAR包时package路径必须严格对应,否则可能压缩JAR包成功,但执行不了

来源:互联网 发布:紫薇圣人 知乎 编辑:程序博客网 时间:2024/06/05 16:08

    java中通过JDK工具手动压缩JAR包,每次都压缩成功,正常生成了.JAR包,但是双击执行时无反应,通过dos环境执行java -jar XX.jar时提示“ Uable to access XX....",花了半天精力想解决这个问题,百度的答案都没有解决,结果第二天一早突然想到一个可能的问题,立马就解决了,原来程序中第一条package resource;很关键,如果有package指令,则除了程序清单manifest中必须指定主程序的package路径外,在执行jar压缩指令时,必须进入包的上级目录执行,然后压包时被压进去的文件都要指定package目录,必须严格对应起来,之前的问题在于要么就是程序清单manifest中没有指定主程序的package路径,要么就是直接进入.class的路径不带文件路径直接执行jar压缩,所以老是压缩成功,却执行不了压缩好的jar文件

例如:

程序中如果第一条有package resource;指令,则程序清单manifest中必须指定以下”resource/“路径

Main-Class: resource/ResourceTest

 

进行JAR压包时:

其中 ”resource“文件夹在”D:\jdk1.8.0_92\CoreJavaBook\v1ch10“路径中,相关的程序文件都是resource这个包中,则先进入”D:\jdk1.8.0_92\CoreJavaBook\v1ch10“路径,然后执行JAR指令时,除了.jar文件,其他所有文件都要指定 ”resource“目录

D:\jdk1.8.0_92\CoreJavaBook\v1ch10>jar cvfm ResourceTest.jarresource/manifest.m
f resource/*.class resource/*.gifresource/*.txt

 

注:系统校验机制不够完善,明明有问题,系统还让压缩成功。如果机制可以进行检验并提醒用户,那这个问题很快就解决了,不致很多时候都要靠人来摸索和解决。这个问题在corejava中关于程序清单manifest.mf的描述中,并没有明确讲清楚主程序的包路径。

1 0
原创粉丝点击