当前位置:文档之家› jar包和war包的打包规范

jar包和war包的打包规范

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杂乱无章。

很难管理。

因此需要单独的使用一种适用于工程的导包方式
2、单独为一个工程导入第三方的jar包,只有这个工程使用的方法:
一共三种方法:
1、传统导入
右击项目。

选择properties →java buildpath→libraries→add external jars方法实现。

这种方法的重用性较低
而且一旦第三方的jar包被移除,那么导入包就会出错。

因此这种情况下还是单独将其放置与本工程一个文件夹中,那么与第三种方法一致。

2 用户java包
Properties→java build path→add labrary→user library→
如果此时有创建好的库可以直接调用,或者是自己创建用户自定义库选择new→输入库→添加jar包
这样用户自定义库就可以在工程中实现重用了同样,移除文件夹也会存在问题的。

方法三文件夹法
在项目中新建文件夹。

将jar文件夹考入其中
将所需jar文件导入。

然后buildpath add to buildpath即可
这样就加入了jar包这种方法最好。

项目性质专一。

而且不会受到jar包的原始路径的影响。

且适合用于将当前的工程导出。

War包的问题
Eclipse下war包的打包
选中工程→右键选择export warfiles→选中服务器类型→确定导出即可.。

相关主题