Java执行jar总结
在项目中有时会把代码打成jar包执行因为jar有如下优点:
- jar里是存储过程执行效率高
- jar包可移植性好
- 注意:c3p0连接池在多线程下有bug,建议换成其他连接池如:dbcp
一 导出jar包
- main方法
public static void main(){}
导出jar
打开jar包中
META-INF
文件夹下MANIFEST.MF
文件指定Main-class路径(
Main-class: com.test.cmd.Main
)- class:后面一定要有空格
- 主文件的路径一定要写全路径
- 上面的Main中一定要有一个换行
二 手动打jar包
- 手动编译
javac -encoding utf-8 -Djava.ext.dirs=libs -d classes src\com\compile\demo\*.java src\com\compile\demo\bean\*.java
- 创建MANIFEST.MF文件
Manifest-Version: 1.0 // 版本号默认为1.0
Main-Class: com.compile.demo.Main//入口的主类,也就是main方法所在的类
Class-Path: commons-lang3-3.4.jar//引用外部类的路径
请务必在文件的最后一行,至少加一个回车换行
- 打包
jar cvfm Myprogram.jar MANIFEST.MF *.class
在该文件夹下执行:jar -cvfm compile.jar MANIFEST.MF com commons-lang3-3.4.jar
在window中手动打jar包:jar cvfm requestUrlTest.jar .\test\manifest.mf .\test\*.classE:\workspace\forkjoin\out\production\ForkJoin> jar -cvfm Test12.jar .\META-INF\MANIFEST.MF .\main\jar\Test12.class
//添加多个class并添加MATE-INF文件:
E:\workspace\forkjoin\out\production\ForkJoin>jar -cvfm Test1.jar .\META-INF\MANIFEST.MF .\main\jar\Test1.class .\main\jar\Test1$MyRunnable.classjar命令是jdk自带的,可在%JAVA_HOME%\bin中找到
c 创建新档案
v 在标准输出中生成详细输出,有输出信息
f 指定档案文件名
m 包含指定清单文件中的清单信息,也就是指定我们的MANIFEST.MF 如果没有这个参数,会生成一个默认的MANIFEST.MF文件
compile.jar 指定生成jar包的名称
三 执行jar包
执行jar包:
java -jar hello.jar
执行时传参数:
java -jar hello.jar md5 s 123
- 需要要注意的是这个
.jar
文件后面的参数之间不要用逗号,而是空格
- 需要要注意的是这个
执行Jar包并设置内存参数:
java -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar my_test.jar
执行的jar依赖第三方jar包:
- 第一种把第三方的jar包解压后与项目一起打包
- 第二种使用:
java -classpath 第三方.jar -jar helloworld.jar
执行jar里面的具体某个类:
java -cp xxx.jar xxx.com.xxxx
其中-cp
命令是将xxx.jar
加入到classpath
,这样java class loader
就会在这里面查找匹配的类 。windows下,对于需要依赖的jar包使用-cp ,多个jar包之间使用分号;
javac -cp .;d:\javaTestIP\httpcore-4.4.1.jar;d:\javaTestIP\httpclient-4.4.1.jar;d:\javaTestIP\commons-logging-1.2.jar TestIPMain.java java -cp .;d:\javaTestIP\httpcore-4.4.1.jar;d:\javaTestIP\httpclient-4.4.1.jar;d:\javaTestIP\commons-logging-1.2.jar TestIPMain
- linux下,对于需要依赖的jar包使用-cp ,多个jar包之间使用冒号:
javac -cp .:httpcore-4.4.1.jar:httpclient-4.4.1.jar:commons-logging-1.2.jar TestIPMain.java
java -cp .:httpcore-4.4.1.jar:httpclient-4.4.1.jar:commons-logging-1.2.jar TestIPMain
- 使用
-Djava.ext.dirs
指定jar包文件目录
javac -Djava.ext.dirs=D:\uepstudio_v4\eclipse\plugins CommonPlugin.java
四 后台不挂断执行jar包
nohup command &
nohup java -XX:MaxMetaspaceSize=1024m -XX:InitialBootClassLoaderMetaspaceSize=256m -Xms2g -Xmx4g -jar video-retrieval-0.0.1-SNAPSHOT.jar > start.log 2>&1 &
五 记录Java进程系统资源占用情况
进程实时监控命令pidstat
获取 jar 执行进程,获取执行过程中内存损耗情况:
pidstat -r -p 12229 2 > memory.log &
Java执行jar总结相关推荐
- java执行jar中的main_浅谈java 执行jar包中的main方法
浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...
- java执行jar包出错:Unable to access jarfile
java执行jar包出错:Unable to access jarfile 错误的原因有多种: 1.一般都是路径不正确.在Windows中,正确的路径类似于: java -jar "D:\W ...
- java执行jar包
java执行jar包 一般运行包含manifest的jar包,可以使用 java -jar <jar-file-name>.jar 如果jar里没有 manifest,则可以使用 java ...
- java 执行jar包命令
不依赖外部jar包 执行java -cp xxx.jar xxx.xxxx.xxxx.MainClass 参数一,参数二 依赖外部jar包 当main类依赖多个jar时,可以把多个jar打包到一个目录 ...
- linux 测试环境启用jar_Linux下用java -jar运行可执行jar包的方法教程
问题来源 一般来说,一个稍微大些的项目都会有一些依赖的Jar包,而在将项目部署到服务器的过程中,如果没有持续集成环境的话,也就是说服务器不支持在线编译及打包,那么需要自己上传依赖的Jar包,然而可能服 ...
- java9可执行jar_单个java文件打成可执行jar包
1 概述 使用JDK自带的jar与java将单个java文件打成可执行jar包并运行. 当然也可以使用IDE完成,使用Maven只需要一个简单的package,但是单个文件嘛,没必要这么"凶 ...
- maven java 可执行jar_Maven项目打包成可执行Jar文件
在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...
- Java:Linux上java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案...
背景: 从ftp上上传jar包到linux上,之后在linux上通过ftp命令下载jar包文件,开始执行Java-jar,一直提示错误:Error: Invalid or corrupt jarfil ...
- java jar log4j_java项目打包成可执行jar用log4j将日志写在jar所在目录操作
开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties log4j.rootLogger = INFO,console,logF ...
最新文章
- android检查usb广播,Android 检测USB 音频设备
- window.open打开新窗口不改变原窗口_我P的图不高级,就很可耻吗?
- linux shell 变量 管道,linux下shell,变量,管道,重定向等基础知识及技巧
- Linux账号和权限管理详解(超详细示例操作)!
- js 中使用 时间datetime 类型到前端iOS 不兼容问题
- oracle8修改最大连接数,ORACLE查看并修改最大连接数的具体步骤
- qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
- 同一目录下拷贝文件夹里_protobuf在C++下的安装使用
- RED HAT 7 性能监控工具
- linux 高并发网络编程之epoll详解
- echarts切换飞线图未清空_讯飞iFLYOS成就产品快速落地 智能硬件迈入直道竞速赛...
- nodejs后台系列--第四篇--koa(三)
- 安卓怎么搭建开发环境 安卓开发环境搭建教程
- 企业微信标签太多怎么删除?
- 信息流优化中,甲乙双方以及媒体的那点事
- upload上传, 取各类文件的名字
- Android 之简易涂鸦板
- java校招笔试题目_Java校招笔试题
- 微信小程序遇到的问题及解决办法
- Error 1718. File was rejected by digital signature policy错误,文件的数字签名被你的本地软件策略给拒绝了,来看看解决方法
热门文章
- Head First 设计模式 —— 单例模式(Singleton)
- 常用标记语言及其工具
- 3C(Computer、Communication、Consumer Electronic)
- UNIX 环境高级编程(四)—— dirent.h
- 标准模板库(STL)之 queue 列传
- matlab控制图像的边界(margin),subplot的间距(gap)
- 在anaconda python开发套件下进行opencv的安装
- 电池电堆及发动机的测试软件,燃料电池发动机测试系统的开发
- python自动化办公-简直出神入化,教你用Python控制Excel实现自动化办公
- 学了python能干啥举例-1 行Python代码能干哪些事,这 13个你知道吗?