在项目中有时会把代码打成jar包执行因为jar有如下优点:

  • jar里是存储过程执行效率高
  • jar包可移植性好
  • 注意:c3p0连接池在多线程下有bug,建议换成其他连接池如:dbcp

一 导出jar包

  • main方法
public static void main(){}
  1. 导出jar

  2. 打开jar包中META-INF文件夹下MANIFEST.MF文件

  3. 指定Main-class路径(Main-class: com.test.cmd.Main

    • class:后面一定要有空格
    • 主文件的路径一定要写全路径
    • 上面的Main中一定要有一个换行

二 手动打jar包

  1. 手动编译
javac -encoding utf-8 -Djava.ext.dirs=libs -d classes src\com\compile\demo\*.java src\com\compile\demo\bean\*.java
  1. 创建MANIFEST.MF文件
Manifest-Version: 1.0  // 版本号默认为1.0
Main-Class: com.compile.demo.Main//入口的主类,也就是main方法所在的类
Class-Path: commons-lang3-3.4.jar//引用外部类的路径
请务必在文件的最后一行,至少加一个回车换行
  1. 打包 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总结相关推荐

  1. java执行jar中的main_浅谈java 执行jar包中的main方法

    浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  2. java执行jar包出错:Unable to access jarfile

    java执行jar包出错:Unable to access jarfile 错误的原因有多种: 1.一般都是路径不正确.在Windows中,正确的路径类似于: java -jar "D:\W ...

  3. java执行jar包

    java执行jar包 一般运行包含manifest的jar包,可以使用 java -jar <jar-file-name>.jar 如果jar里没有 manifest,则可以使用 java ...

  4. java 执行jar包命令

    不依赖外部jar包 执行java -cp xxx.jar xxx.xxxx.xxxx.MainClass 参数一,参数二 依赖外部jar包 当main类依赖多个jar时,可以把多个jar打包到一个目录 ...

  5. linux 测试环境启用jar_Linux下用java -jar运行可执行jar包的方法教程

    问题来源 一般来说,一个稍微大些的项目都会有一些依赖的Jar包,而在将项目部署到服务器的过程中,如果没有持续集成环境的话,也就是说服务器不支持在线编译及打包,那么需要自己上传依赖的Jar包,然而可能服 ...

  6. java9可执行jar_单个java文件打成可执行jar包

    1 概述 使用JDK自带的jar与java将单个java文件打成可执行jar包并运行. 当然也可以使用IDE完成,使用Maven只需要一个简单的package,但是单个文件嘛,没必要这么"凶 ...

  7. maven java 可执行jar_Maven项目打包成可执行Jar文件

    在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...

  8. 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 ...

  9. java jar log4j_java项目打包成可执行jar用log4j将日志写在jar所在目录操作

    开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties log4j.rootLogger = INFO,console,logF ...

最新文章

  1. android检查usb广播,Android 检测USB 音频设备
  2. window.open打开新窗口不改变原窗口_我P的图不高级,就很可耻吗?
  3. linux shell 变量 管道,linux下shell,变量,管道,重定向等基础知识及技巧
  4. Linux账号和权限管理详解(超详细示例操作)!
  5. js 中使用 时间datetime 类型到前端iOS 不兼容问题
  6. oracle8修改最大连接数,ORACLE查看并修改最大连接数的具体步骤
  7. qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
  8. 同一目录下拷贝文件夹里_protobuf在C++下的安装使用
  9. RED HAT 7 性能监控工具
  10. linux 高并发网络编程之epoll详解
  11. echarts切换飞线图未清空_讯飞iFLYOS成就产品快速落地 智能硬件迈入直道竞速赛...
  12. nodejs后台系列--第四篇--koa(三)
  13. 安卓怎么搭建开发环境 安卓开发环境搭建教程
  14. 企业微信标签太多怎么删除?
  15. 信息流优化中,甲乙双方以及媒体的那点事
  16. upload上传, 取各类文件的名字
  17. Android 之简易涂鸦板
  18. java校招笔试题目_Java校招笔试题
  19. 微信小程序遇到的问题及解决办法
  20. Error 1718. File was rejected by digital signature policy错误,文件的数字签名被你的本地软件策略给拒绝了,来看看解决方法

热门文章

  1. Head First 设计模式 —— 单例模式(Singleton)
  2. 常用标记语言及其工具
  3. 3C(Computer、Communication、Consumer Electronic)
  4. UNIX 环境高级编程(四)—— dirent.h
  5. 标准模板库(STL)之 queue 列传
  6. matlab控制图像的边界(margin),subplot的间距(gap)
  7. 在anaconda python开发套件下进行opencv的安装
  8. 电池电堆及发动机的测试软件,燃料电池发动机测试系统的开发
  9. python自动化办公-简直出神入化,教你用Python控制Excel实现自动化办公
  10. 学了python能干啥举例-1 行Python代码能干哪些事,这 13个你知道吗?