Java打包Jar包后使用脚本执行
打包jar包的应用场景:
有时候,我们需要将一个java工程,放在服务器上让它执行。我们知道在IDE中,都是人为操作,执行这个程序。但是如果没有IDE环境,那么怎么执行Java工程呢?工程建好之后,结构图如下:
这里,介绍一种jar包打包,并利用cmd执行的方式运行。
本文的IDE开发环境为Eclipse,所以idea环境开发的同学可能不太一样。
文章图片
1,创建并编辑MANIFEST.MF文件
如果没有MANIFEST.MF文件,就需要先创建该文件。该文件的主要作用就是指定依赖项的路径以及程序执行的入口。
下面是一个MANIFEST.MF的示例:
Manifest-Version: 1.0Class-Path: lib/commons-beanutils-1.7.0.jar lib/commons-collections-3.2.jar lib/commons-httpclient-3.0.1.jar lib/commons-lang-2.4.jar lib/commons-logging-1.0.4.jar lib/concurrent.jar lib/cors-filter-1.7.jar lib/ezmorph-1.0.3.jar lib/gson-2.3.1.jar lib/icu4j_3_2.jar lib/java-property-utils-1.9.jar lib/jpe_sdk.jar lib/jsde_sdk.jar lib/json-lib-2.2.3-jdk15.jar lib/ojdbc14-10.2.0.2.0.jar lib/postgresql-9.2-1004.jdbc4.jar lib/sdoapi.jarMain-Class: entry.RoadSyn
注:
- (1)上面的jar包的路径意思是和jar包在同一个目录下的lib文件夹。
- (2)上面的多个jar包路径之间以空格相隔
- (3)当然,上面的class-path有另一种简单写法,这种写法针对的就是lib下全部都是jar包,因此只需要使用lib/*
- (4)Main-Class指的是程序的执行入口,例如本例子中,就是entry这个package下的RoadSyn类。该类中定义了main函数。
- (5)文件的冒号后面必须要空一个空格,否则会出错
- (6)文件的最后一行必须是一个回车换行符,否则也会出错
文章图片
2,属性文件的路径
本例中,将属性文件放在和打包的jar文件一样的目录下
对于本例中的读取属性文件的函数如下(提供了以下两种不同方式):
方法1(打包成jar包之后不需要更改该部分的代码):
package util; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Properties; public class PropertiesUtil {public static String getProperties(String propertyname, String sKey) {Properties properties = new Properties(); try {InputStreamReader insReader = new InputStreamReader(new FileInputStream(System.getProperty("user.dir")+"\\"+propertyname+".properties"), "UTF-8"); properties.load(insReader); } catch (IOException e) {e.printStackTrace(); }String s = properties.getProperty(sKey); return s; }public static String getProperties(String propertyname) {Properties properties = new Properties(); try {InputStreamReader insReader = new InputStreamReader(new FileInputStream(System.getProperty("user.dir")+"\\"+propertyname+".properties"), "UTF-8"); properties.load(insReader); } catch (IOException e) {e.printStackTrace(); }String s = properties.toString(); return s; }}
上面的user.dir即为程序的运行目录
方法2:
package util; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Properties; public class PropertiesUtil {public static String getProperties(String propertyname, String sKey) {////方法1,在myeclipse运行//String url = Thread.currentThread().getContextClassLoader()//.getResource("").toString(); //url = url.substring(url.indexOf("/") + 1); ////url = url.replace("%20", " "); //Properties properties = new Properties(); //try {//InputStreamReader insReader = new InputStreamReader(new FileInputStream(url + propertyname + ".properties"), "UTF-8"); //properties.load(insReader); //} catch (IOException e) {//e.printStackTrace(); //}//String s = properties.getProperty(sKey); //方法2,放入jar包Properties properties = new Properties(); FileInputStream in; try {in = new FileInputStream(propertyname+".properties"); properties.load(in); } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace(); }String s=properties.getProperty(sKey); return s; }}
3,打包jar包
【Java打包Jar包后使用脚本执行】利用myeclipse自己的打包功能,选择自己项目路径下的MANIFEST.MF文件
文章图片
导出成jar包
文章图片
选择使用工作空间中已有的MANIFEST.MF文件
文章图片
经过上面几个步骤,就可以完成程序打包的过程了
4,bat文件
然后把所有的文件(包括属性文件,lib下的jar包,打包之后的jar包,以及执行的bat文件)放在同一个目录下:
文章图片
上面的bat文件的内容为:
java -jar RoadSegSynTool.jar之后直接执行这个文件就可以了
如果是需要在服务器宕机情况下,服务器重启之后程序自动运行,那么可以将该服务设置为开机自启动,将其添加到开机自启动项中,具体操作,移步:
https://www.jb51.net/article/233463.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- Beego打包部署到Linux
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用