Java打包Jar包后使用脚本执行

 更新时间:2021年12月31日 15:22:06   作者:KingWang_WHU  
本文详细讲解了Java打包Jar包后使用脚本执行的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

打包jar包的应用场景:

有时候,我们需要将一个java工程,放在服务器上让它执行。我们知道在IDE中,都是人为操作,执行这个程序。但是如果没有IDE环境,那么怎么执行Java工程呢?

这里,介绍一种jar包打包,并利用cmd执行的方式运行。

本文的IDE开发环境为Eclipse,所以idea环境开发的同学可能不太一样。

工程建好之后,结构图如下:

1,创建并编辑MANIFEST.MF文件

如果没有MANIFEST.MF文件,就需要先创建该文件。该文件的主要作用就是指定依赖项的路径以及程序执行的入口。

下面是一个MANIFEST.MF的示例:

Manifest-Version: 1.0
Class-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.jar
Main-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 block
            e.printStackTrace();
        }
        String s=properties.getProperty(sKey);
        return s;
    }
}

3,打包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中ThreadPoolExecutor常识汇总

    java中ThreadPoolExecutor常识汇总

    这篇文章主要介绍了java中ThreadPoolExecutor常识汇总,线程池技术在并发时经常会使用到,java中的线程池的使用是通过调用ThreadPoolExecutor来实现的,需要的朋友可以参考下
    2019-06-06
  • 图书管理系统java版

    图书管理系统java版

    这篇文章主要为大家详细介绍了java版的图书管理系统,通过实例为大家快速掌握数据库编程技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Mybatis Plugin拦截器开发过程详解

    Mybatis Plugin拦截器开发过程详解

    这篇文章主要介绍了Mybatis Plugin拦截器开发过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java基于阻塞队列实现生产者消费者模型示例详解

    Java基于阻塞队列实现生产者消费者模型示例详解

    这篇文章主要介绍了Java基于阻塞队列实现生产者消费者模型,阻塞队列的特点就是阻塞两个字,阻塞功能使得生产者和消费者两端的能力得以平衡,当有任何一端速度过快时,阻塞队列便会把过快的速度降下来,感兴趣的朋友可以参考下
    2023-12-12
  • SpringBoot整合MyBatis-Plus的示例代码

    SpringBoot整合MyBatis-Plus的示例代码

    这篇文章主要介绍了SpringBoot整合MyBatis-Plus的示例代码,使用 MyBatis-Plus 可以减少大量的开发时间,单表的增删改查可以不用写 sql 语句,本文主要介绍整合需要主要事项,需要的朋友可以参考下
    2022-03-03
  • Java中字符串String的+和+=及循环操作String原理详解

    Java中字符串String的+和+=及循环操作String原理详解

    Java编译器在编译时对String的+和+=操作会创建StringBuilder对象来进行字符串的拼接,下面这篇文章主要给大家介绍了关于Java中字符串String的+和+=及循环操作String原理的相关资料,需要的朋友可以参考下
    2023-01-01
  • Hashmap非线程安全关于hash值冲突处理

    Hashmap非线程安全关于hash值冲突处理

    这篇文章主要为大家介绍了Hashmap非线程安全关于hash值冲突的处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Spring Boot集成Java DSL的实现代码

    Spring Boot集成Java DSL的实现代码

    这篇文章主要介绍了Spring Boot集成Java DSL的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 使用注解+RequestBodyAdvice实现http请求内容加解密方式

    使用注解+RequestBodyAdvice实现http请求内容加解密方式

    这篇文章主要介绍了使用注解+RequestBodyAdvice实现http请求内容加解密方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Javaweb请求转发及重定向实现详解

    Javaweb请求转发及重定向实现详解

    这篇文章主要介绍了Javaweb请求转发及重定向实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论