工作需要研究了下jar,这里就举个简单的例子,以helloworld为例吧
1.启动eclipse编写代码:
次步不做赘述
package cn.test.jar; public class HelloWorld { public static void main(String[] args) { System.out.println("this is HelloWorld.main()"); if (args.length > 0) { //传参时使用 for (String str : args) { System.out.println("the parameter of you send is --->" + str); } } } }
2.编译,拷贝编译出来的文件和支持库
这里如果使用读写之类的Java类需要把JRE的几个文件全部打包下,不然不能正常运行的。
(ps:jar的几个包分别是:resources.jar、rt.jar、jsse.jar、jce.jar、charsets.jar、dnsns.jar、localedata.jar、sunjce_provider.jar、sunmscapi.jar、sunpkcs11.jar)
3.执行打包命令:
此处是我把我编写出来的代码,和类库打包成一个hello.jar的库
jar cvf hello.jar cn/* lib/*
此时桌面会生成一个jar包
4.修改配置信息
我们可以压缩包的方式打开jar会发现,霍,多了一个文件夹,这个正是我们需要修改的文件,直接拖拽出来,编辑,然后再塞进去更新包,即可达到修改配置信息的目的;具体步骤看下:
*粉色部分是我们要修改的配置文件的路径
打开文件拖出来的MANIFEST.MF文件,编辑打开,发现里面内容如下:
Manifest-Version: 1.0 Created-By: 1.6.0_38 (Sun Microsystems Inc.)
霍,版本信息,第一行是版本1.0,而二个是由谁创建
我们现在是设置个主类,也就是我们的main函数的哪个类,在设置个支持的jar包路径即可,修改后如下:
Manifest-Version: 1.0 Created-By: 1.6.0_38 (Sun Microsystems Inc.) Main-Class: cn.test.jar.HelloWorld Class-Path: charsets.jar dnsns.jar jce.jar jsse.jar localedata.jar resources.jar rt.jar sunjce_provider.jar sunmscapi.jar sunpkcs11.jar
修改完毕,替换回去
更新包:
jar umf MANIFEST.MF hello.jar
5.运行测试:
两种方式,一个是可以直接命令行来运行,另一个是新建个可执行脚本语言来执行。【windows是bat脚本,而linux则是sh脚本】
此处我们就命令行来测试吧。因为我之前main方法中写了接受多参数的方法,我这里也一并测试下,效果如下:
C:UserssanboDesktop>java -jar hello.jar this is HelloWorld.main() C:UserssanboDesktop>java -jar hello.jar "hello" this is HelloWorld.main() the parameter of you send is --->hello C:UserssanboDesktop>java -jar hello.jar "hello" "sanbo" this is HelloWorld.main() the parameter of you send is --->hello the parameter of you send is --->sanbo C:UserssanboDesktop>java -jar hello.jar "hello" "sanbo" "" this is HelloWorld.main() the parameter of you send is --->hello the parameter of you send is --->sanbo the parameter of you send is --->
ps:如果你代码未进行编译运行过,会出现如下错误,一定注意!
C:UserssanboDesktop>java -jar hello.jar //结果呢,结果呢?where is my result~ ^_~
晚安,最近想换工作,祈福。
更多的相信信息,可以看文档: