我们经常将web工程打成war包部署到tomcat上,对于普通的java工程(Java Project)要打成普通的jar包或者是可运行的jar包该怎么做呢

打包之前先确定以下几点是否要打成可运行的jar包

项目是否依赖了第三方的jar包

是否需要读取jar包外的配置文件

普通的JAR包(不可运行,也不依赖其他JAR包)

JAR FILE的方式通常是将项目打成一个普通的jar包(非运行jar包)

选择要打包的文件,不需要的文件不必打包,减小打包后的jar文件大小

其中几个选项的含义Export generated class files and resources 表示只导出生成的.class文件和其他资源文件

Export all output folders for checked projects 表示导出选中项目的所有文件夹

Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了

Export refactorings for checked projects 把一些重构的信息文件也包含进去

然后一路Next,最后Finish就好了。

可运行并且依赖其他JAR包

方式一(JAR file)

在工程目下新建文件MANIFEST.MF,并添加以下参数

Manifest-Version: 1.0

Class-Path: tf.jar/lib/junit.jar tf.jar/lib/log4j.jar tf.jar/lib/ojdbc6_g.jar tf.jar/lib/org.hamcrest.core_1.3.0.v201303031735.jar

Main-Class: priv.bss.gj.SeqMatchTblColApplication

第一行是MAINIFEST的版本

第二行Class-Path就指定了外来jar包的位置

第三行指定我们要执行的MAIN java(main方法)文件

需要注意以下几点:Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field

假设我们的项目打包后为SumECNU4.0.jar,那么按照上面的定义,应该在 SumECNU4.0.jar的同层目录下建立一个lib文件夹(即lib文件和打包的jar文件在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exception in thread “main” java.lang.NoClassDefFoundError”的错误

Main-Class后面是类的全地址,比如你的主文件是SMTester.java,文件里打包为package edu.ecnu.dase.test; 那么这里就写edu.ecnu.dase.test.SMTester,不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误

写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,否则将会出现“jar中没有主清单属性”的错误

右击Java工程选择Export—>选择JAR file—>Next

选择自己的MANIFEST.MF文件,然后Finish

最后的项目结构

lib目录里面是依赖的jar包,需要自己创建lib目录并且把jar放进去(与打包好的jar包同一级目录)

方式二(Runnable JAR file)

右击Java工程选择Export—>选择Runnable JAR file—>Next

library handling选项说明第一个为提取extract需要的依赖的库或jar合成到jar 文件里

第二个则仅仅打包依赖库到jar文件

第三个则把依赖库放到一个文件夹中

最后的项目结构

依赖的第三方的jar包已经包含在了打包好的jar包里面了

读取JAR包外部的配置文件

我们的工程常常需要读取配置文件,如果配置文件存放在根目录(src)下,打jar包的时候会将配置文件一起打包。这时候我们想要修改配置文件的信息,还要用压缩工具打开jar包再进行修改,这实在有点麻烦,所以通常需要读取jar包外部的配置文件

修改读取配置文件的代码

首先我们要修改读取配置文件的代码

代码例子如下(以读取数据库配置为例)

private static Properties properties;

/**

* 抽取数据库配置文件

*/

static {

try {

properties = new Properties();

//读取程序内部(根目录下)的配置文件

//InputStream resourceAsStream = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");

/**

* 读取程序外部配置文件(jar包外的文件)

* System.getProperty("user.dir") 获取项目的绝对路径

*/

String property = System.getProperty("user.dir")+"/db.properties";

//logger.debug(property);

InputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(property));

properties.load(bufferedInputStream);

} catch (IOException e) {

logger.error("读取配置文件出错!",e);

}

}

打jar包

然后用方式一(JAR file)或者方式二(Runnable JAR file)将工程打成jar包

然后将配置文件放在jar包同一级目录下

最后的项目结构

方式一(JAR file)

方式二(Runnable JAR file)

参考文章

java普通工程打war包_普通java工程(Java Project)打jar包相关推荐

  1. mvn 打包可执行包_如何用Maven打包可执行jar包

    在pom文件里面加入如下代码: org.apache.maven.plugins        maven-compiler-plugin                    1.7         ...

  2. linux部署jar项目报错_如何在Linux服务器上部署jar包

    启动程序方法 1.上传jar包到linux服务器下 2.启动jar包 ​前台模式 java –jar XXXX.jar(注意这个命令启动时,断开服务连接后,服务就关闭了) ​后台模式 nohup ja ...

  3. python调用jar包的模块_使用 Python 的 JPype 模块调用 Jar 包

    背景与需求 最近学习并安装使用了HttpRunner框架去尝试做接口测试,并有后续在公司推广的打算. HttpRunner由Python开发,调用接口时需要依赖Python:而大多数公司的扩展工具包使 ...

  4. springboot项目打成可依赖jar包_用IDEA把SpringBoot项目打成jar发布项目

    打包发布 打包前确保项目在IDEA上能正常运行 Project Structure 快捷键 ctrl + shift + alt + s 或点击左上角 File -> Project Struc ...

  5. java生成jar包时使第三方jar_IEDA生成可运行jar包(包含第三方jar包)的方法

    最近现网需要处理一下数据,来适配一个场景.安排我来编写一个脚本来实现,由于步骤比较多,且需要调用其他服务接口,使用shell脚本来实现比较困难,所以想到了使用shell脚本调用java可执行jar包的 ...

  6. linux启动jar包指定日志输出目录下,linux 启动jar包 指定yml配置文件和输入日志文件...

    命令为: nohup java -jar project.jar  --spring.config.location=/home/project-conf/application.yml >  ...

  7. android jar 电子书下载,【Android】Gradle project sync jar包长时间下载不下来的解决办法...

    当我们新建一个Android项目,或者在项目中依赖使用一个新的第三方库时,Android Studio经常会从jcenter或者maven仓库下载jar包,但是我们的网络环境不一定一直那么的顺畅,当网 ...

  8. java秃头表情包_最怕空气突然的安静表情包 - 最怕空气突然的安静微信表情包 - 最怕空气突然的安静QQ表情包 - 发表情 fabiaoqing.com...

    最怕空气突然安静最怕大乔突然关心_最怕_大乔_突然_安静_关心表情 突然登场 - 最怕空气突然的安静 ​_突然表情 突然抱紧 - 最怕空气突然的安静 ​_突然表情 突然兴奋 - 最怕空气突然的安静 ​ ...

  9. java如何脱离ide运行_如何脱离IDE使用自己的jar包?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package  qmy.test; public  class  C1 { public  void  write() { System.out.pri ...

  10. gradle 修改java代码_自定义一个gradle插件动态修改jar包Class文件

    动态修改jar包中的class文件,预埋占位符字符串,在编译代码时动态植入要修改的值.记录一下整个过程及踩过的坑. 创建一个Android项目,再创建一个Android library,删掉里面所有代 ...

最新文章

  1. java for循环返回值_Java中的for循环——通过示例学习Java编程(9)
  2. html中事件调用JavaScript函数时有return与没有return的区别
  3. 如何学习Python课程
  4. 【参会指南】神策 2020 数据驱动用户大会,10 月 13 日将重磅开幕!
  5. c/c++操作mysql数据库使用utf8总结
  6. iptables禁止端口和开放端口
  7. 事务的基本概念,Mysql事务处理原理
  8. openmv串口数据 串口助手_实例 | 使用Python串口实时显示数据并绘图
  9. 某度起诉“文库下载神器”,索赔300万
  10. 机器学习基石1 学习笔记
  11. 计算机专业 论文检索,精选】计算机专业文献检索论文参考选题
  12. 搜狗高级测试经理诸葛东明谈基于AI图像识别的输入法性能测试实践
  13. 【DeepExploit】基于强化学习的自动渗透工具
  14. 惠普暗影精灵II代pro进入biso
  15. 小白学习笔记之Python要点
  16. 对话本体创始人李俊——有关IEO、DApp、区块链游戏的一些冷思考
  17. `英语` 2022/8/26
  18. 二分三分法--+++这一天的纪录
  19. 物流行业为什么要求需要参与等保测评
  20. MySQL实战45讲(前5讲)

热门文章

  1. 毕设题目:Matlab优化覆盖
  2. 【三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 1387期】
  3. 【CVRP】基于matlab模拟退火算法求解带容量的车辆路径规划问题【含Matlab源码 159期】
  4. SPSS计算变量(图文+数据集)【SPSS 012期】
  5. matplotlib——直方图
  6. pandasDataframe模块
  7. jq怎么更换json对象的key_toString如何转json
  8. python拍3游戏_用Python实现小3传奇小游戏(源代码)
  9. Bar函数--Matplotlib
  10. APMServ5.2.6win10系统Apache、MySQL5.1启动失败解决办法