java中通过JDK工具手动压缩JAR包时package路径必须严格对应,否则可能压缩JAR包成功,但执行不了
2016-07-31 10:56
501 查看
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的描述中,并没有明确讲清楚主程序的包路径。
例如:
程序中如果第一条有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的描述中,并没有明确讲清楚主程序的包路径。
相关文章推荐
- java项目对应的jar文件通过命令接收参数并且执行
- 将文件夹压缩为jar包——JAVA小工具
- [笔记]eclipse中批量修改Java类文件中引入的package包路径 - [工具使用]
- Java程序压缩成jar包,并在Linux后台执行
- jdk路径下jar包报java.lang.NoClassDefFoundError问题解决
- 将jar包 打成可以直接执行某个类的main函数 通过java -jar 执行jar包
- 手动执行java命令的四种方法总结(类,jar包的手动执行)
- eclipse中批量修改Java类文件中引入的package包路径 - [工具使用]
- 手把手教java——手动编译可执行jar包
- 怎样将Java文件生成可执行的jar文件(使用Eclipse工具)
- 通过Eclipse将java工程打包成可执行归档文件jar
- 获得执行jar的运行路径-使用java.class.path 和 codesource的location
- Java通过一系列工具打包成不需要JDK支持的exe文件
- 手动打包sun java jdk [Installing the latest JDK on Debian by creating a .deb package from Sun binaries]
- 【Java 路径】运行可执行jar包获取相关路径
- java中获得jar包执行路径的方法
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- java获得执行jar的运行路径
- 通过maven 将java程序及其依赖打成可执行jar包
- Java VisualVM(Java性能分析工具)插件安装及JDK版本对应插件中心地址