您的位置:首页 > 运维架构 > Linux

java中的jar打包成可执行文件,可以避免在linux中的java程序运行时内存剧增现象

2012-10-16 22:44 1071 查看


java类打包成.jar可执行文件

原因:

发现在windows中运行好好的java程序,一迁移到linux环境下就发现程序运行时,内存会不断增加,直到被系统killed.所以我排除出内存泄漏这种可能性(因为在windows下好好运行着的),所以我打算试试把java中的类一起打包成.jar可执行文件来 java -jar xx.jar执行看看.果然在linux中进程内存到一定值后,没有继续猛增!

开始:

当然是直接在命令行里面打jar

jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...

其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。

-c 创建一个jar包

-t 显示jar中的内容列表

-x 解压jar包

-u 添加文件到jar包中

-f 指定jar包的文件名

-v 生成详细的报造,并输出至标准设备

-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)

-0 产生jar包时不对其中的内容进行压缩处理

-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置

-i 为指定的jar文件创建索引文件

-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令

接着google到几篇文章

http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html

http://www.diybl.com/course/3_program/java/javajs/2007104/75874.html

http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html
http://wwwhomes.uni-bielefeld.de/tliu1/oldpages/wiki/JarUse.html#sec4
我首先是创建了MANIFEST.MF文件

vi MANIFEST.MF

接着编辑了里面的

Main-Class: yourmainclass(无后缀)

Class-Path: xx.jar xxx.jar xxxx.jar(额外包所在路径/)

接着我就打命令:

pwd

/usr/java

ls

org jdk1.5等等文件

jar -cvfm my.jar MANIFEST.MF org/*

再接着就

java -jar my.jar

发现好像还要加-server参数

java -server -jar my.jar

重点在于MANIFEST.MF中的Class-Path

和/etc/profile中的classpath 设置要明确

转载地址:http://blog.csdn.net/happychinesenewyear/article/details/2419241
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: