jar包和war包的打包规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CMD 模式下实现jar打包
注意包名以及manifest.mf文件每一个冒号有空格
最后一行为空
1、编译java文件
2、写manifest.mf文件
Manifest-Version: 1.0
Main-Class:<空格>package.class//指定主类,目的是如果有main函数能够直接运行
Class-Path: 包含的其他jar包中间空格间隔如果有多个jar包且不能为jar包中的jar包。是需要在包里面包含的本地包lib/edd/.
<换行>最后一行为空行
保存
注意:没有添加主清单属性则不能够直接通过java –jar 包名.jar运行文件
Cmd下执行jar –cvfm name.jar manifest.mf 文件.class
这种情况是打包没有package名的.class文件。
jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名
jar cvfm classes.jar mymanifest.mf -C foo/ . 文件夹下所有类打包
foo为文件夹。
这种是打包有包名的.class。应为这种情况下编译会产生cn.mypackage的情况
因此在manifest文件中会写出,而且也需啊把包的文件夹放在与manifest同一个位置再打包运行即可
运行即是java –jar name.jar;这种情况必须要有manifest文件。不然不能执行main函数
含有多个java编译文件,属于同一个包的打包。也是上诉方法,将其编译到一个包文件夹中,然后编译运行即可。
Jar 包的导入(CMD下使用)
只需要将包放入到classpath对应的文件夹下,然后使用import cn.ddd.class
即可。
如下:
import cn.mypackage.Testjar;//但是这种情况下用类需要把全名写出来不然不能访问,也就是说import cn.mypackage.*;写法是错误的
public class testcout
{
public static void main(String[] args)
{
Testjar t = new Testjar();
t.display();
}
}
运行输出:
Eclipse 下实现jar包的打包
Eclipse的jar包打包同样需要多个过程
1、选择包右键选择导出jarfile
2、
3、选择要导出的文件
4、
5、选择自己的manifest或者生成的manifest
选择主类,实现直接运行。然后finish即可
关于生成自己的manifest.mf文件问题
这种情况下是使用了第三方的jar包的情况。
因此系统生成manifest文件不可用,需要自行生成manifest文件。
Manifest-Version: 1.0
Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar
lib/commons-logging-1.1.jar lib/log4j-1.2.16.jar lib/jackson-all-1.8.5.jar Main-Class: main.KillCheatFans
1、Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field;
2、假设我们的项目打包后为KillCheatFans.jar,那么按照上面的定义,应该在KillCheatFans.jar的同层目录下建立一个lib文件夹(即lib文件和打包的jar文件
在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exception in thread "main" ng.NoClassDefFoundError”的错误;
也就是说这个文件加下具有manifest文件以及lib文件,lib中存放有第三方的jar包。
3、Main-Class后面是类的全地址,比如你的主文件是KillCheatFans.java,文件里打包为package com.main; 那么这里就写com.main.KillCheatFans,
不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;
4、写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,
否则将会出现“jar中没有主清单属性”的错误。
注意eclipse下的文件最好都利用工程的file系统建立,不然会出现读取不到文件资源
以上情况下若想使用eclipse打包。需要在工程下建立文件夹放置第三方包(eclipse装载包的方法三)。然后工程文件夹下新建一个MANIFEST.MF文件写入配置信息。这样保证了装有第三方包的文件与MANIFEST.MF处于一个文件夹内,这样编译不会出现问题。
然后再进行打包即可
Eclipse 生成jar包含有第三方jar包的情况
Eclipse 下实现jar包的导入
1、加入到jdk的库文件中作为本地库使用
任何一个工程都能用到,缺点是不具有专一性。如果每一次都采用这种导包的方式最后导致jdklib杂乱无章。很难管理。因此需要单独的使用一种适用于工程的导包方式