最近研究了如何在java工程打包,期间遇到的一些问题进行总结,如打包成test.jar 文件 Manifest-Version: 1.0 上面为打包为jar中的包说明文件. 下面这个报错一直出现. 如果这个写的不对. 则就会一直报错. 最后必须有换行. 这个也是要注意的. 否则依然提示没有mainclass. 不要因为这个小事情耽误了时间. 其中 lib/ 表示这个jar必须在打包Test.jar所在目录的一个lib子目录中. 运行jar需要命令: java -jar Test.jar 关于java -classpath a.jar;b.jar; class test.Test 执行时. a.jar;b.jar; 后面都必须有分号. 否则报错. 不要指望不写classpath让系统自己找. 这不是在eclipse里面.必须写上你要使用的类. 否则总会提示您编译出错. 2、MANIFEST.MF 文件中奇怪的分行和空格要求 工作中发现的一个非常奇怪也很有趣事情,有关MANIFEST.MF文件中的分行和空格的格式要求,分享给大家。 对于通常的MANIFEST.MF文件,一般格式是: Class-Path: lib/a.jar lib/b.jar lib/c.jar lib/d.jar lib/e.jar lib/f.jar 但是对于一些大型的项目,因为依赖包众多,比如大于30个,那么如果还写在一行内,就会出现一个长度惊人的行。程序运行倒不会有任何问题,但是对于版本控制就很不友好,如增加或者减少一个依赖包,这行就会被改写。以后compare不同版本时,只能知道这行被修改了确无法直接知道是做了什么修改,必须通过其他方式才能对比出来。 同样的问题发生在code merge时,如果两个分支都修改了这个文件,就必须通过手工来进行merge,而且要对照出来彼此到底改了什么,很困难而且容易出错。 因此一个改进就是将这个文件中的依赖按照一行一个依赖的方式重写,这样以后修改时只会修改改依赖所在的行,很容易就对比出来具体做了哪些感动,code merge时版本控制软件一般也很容易直接自动merge成功。 修改后的文件类似如下: Class-Path: lib/a.jar 但是在实际操作时发生了意料之外的问题,会出现异常或者类无法找到,经检查发现问题出现在MANIFEST.MF的格式上,MANIFEST.MF对于分行和空格是有特殊要求的: 1. 每行的最后一个jar的名称后不容许有空格 2. 每行的开头必须有不少于2个空格 以上两个条件有一个不满足都会出现问题,有点古怪。 3、严格的MANIFEST.MF格式 |
修改manifest变成系统应用
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
修改manifest仓库分支
今天工作时遇到的问题,要在安卓N上开始适配recovery,新建了一个专用于适配n的分支 v8-n-dev 但这个分支所在的仓库(manifest中的
git repo manifest 经验 xml -
离线应用manifest
特点: 1.离线可访问 - 没有网络仍可访问整个应用 2.很小的服务器负载 - 缓存在本地,不需要到服务器请求 3.高速 &nbs
离线应用manifest 缓存 浏览器缓存 服务器 -
java控制显示格式
printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填0,如省略表示指定空位不填。 ④m.n:m指域宽,即
java控制显示格式 c visual studio 2008 字符串 格式输出