注意包名以及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\" java.lang.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 buildpathlibrariesadd external jars方法实现。
这种方法的重用性较低
而且一旦第三方的jar包被移除,那么导入包就会出错。因此这种情况下还是单独将其放置与本工程一个文件夹中,那么与第三种方法一致。
2 用户java包
Propertiesjava build pathadd labraryuser library
如果此时有创建好的库可以直接调用,或者是自己创建用户自定义库
选择new输入库添加jar包
这样用户自定义库就可以在工程中实现重用了 同样,移除文件夹也会存在问题的。
方法三文件夹法
在项目中新建文件夹。 将jar文件夹考入其中 将所需jar文件导入。
然后buildpathadd to buildpath即可
这样就加入了jar包这种方法最好。项目性质专一。而且不会受到jar包的原始路径的影响。且适合用于将当前的工程导出。
War包的问题
Eclipse下war包的打包
选中工程右键选择export warfiles选中服务器类型确定导出即可.
因篇幅问题不能全部显示,请点此查看更多更全内容