惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
博客园 - 聂微东
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
IT之家
IT之家
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
爱范儿
爱范儿
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
U
Unit 42
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
F
Fortinet All Blogs
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理

祈雨的笔记

安全多方计算MPC spark原理解析 kueue执行源码分析 spark on k8s执行源码分析 spark-operator源码解析 系统压测遇到的缓存击穿问题 我的世界PC与安卓联机 蚂蚁金服流量投放平台的AIG改造 G1大对象致Old区占用率高 日志打印导致接口响应率下跌分析 Groovy加载类导致OOM分析 ERROR日志打印导致CPU满载 记OceanBase死锁超时 应用发版期间服务响应超时 Ark Serverless初探 系统优化复盘一二三 The user specified as a definer does not exist Kong网关初探 API网关选型调研 CPU火焰图常用工具 配置中心选型调研 root操作Nginx导致用户组错误 基于Proxifier使用代理 FastJSON字段智能匹配踩坑 Nacos初探 记一次Nginx服务器CPU满荷载故障 基于券系统分库分表的思考 limit不参与SQL成本计算致索引失效 Linux常用性能监控命令 golang低版本http2偶现400
手动打包输出后端jar
祈雨的笔记 · 2017-10-03 · via 祈雨的笔记

1、目标

输出可以依赖指定路径的jar包,并能读取jar包外的配置文件的后端包

2、方式1

2.1 操作

2.2.1、右击后端项目,选择“Export”,选择“Runnable JAR file”。

这里写图片描述

2.2.2、选中第三种输出方式,输出jar。

这里写图片描述

2.2.3、输出的文件为运行jar和其依赖jar包。使用压缩工具打开运行jar“business.jar”,将根目录的配置文件删除。

这里写图片描述

这里写图片描述

2.2.4、将运行jar、依赖包和删除的配置文件放入同一级目录中。

这里写图片描述

2.2.5、输入命令运行。

1
java -jar business.jar

2.2、备注

该方法可以避免依赖的jar包环境配置问题,以及通过classpath获取的配置文件的路径问题。

2.3、原理

运行jar包中META-INF/MANIFEST.MF是关键。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Manifest-Version: 1.0
Class-Path: . business_lib/mchange-commons-java-0.2.10.jar business_li
b/c3p0-0.9.5.1.jar business_lib/commons-logging.jar business_lib/comm
ons-pool2-2.4.2.jar business_lib/junit-4.12.jar business_lib/libthrif
t-0.9.1.jar business_lib/log4j-1.2.17.jar business_lib/mybatis-3.2.8.
jar business_lib/mybatis-paginator-1.2.17.jar business_lib/mybatis-sp
ring-1.2.2.jar business_lib/mysql-connector-java-5.1.32.jar business_
lib/objenesis-2.1.jar business_lib/slf4j-api-1.6.6.jar business_lib/s
lf4j-log4j12-1.6.6.jar business_lib/spring-aop-4.1.3.RELEASE.jar busi
ness_lib/spring-beans-4.1.3.RELEASE.jar business_lib/spring-context-4
.1.3.RELEASE.jar business_lib/spring-core-4.1.3.RELEASE.jar business_
lib/spring-expression-4.1.3.RELEASE.jar business_lib/spring-jdbc-4.1.
3.RELEASE.jar business_lib/spring-test-4.0.4.RELEASE.jar business_lib
/spring-test.jar business_lib/spring-tx-4.1.3.RELEASE.jar business_li
b/hamcrest-core-1.3.jar business_lib/aopalliance-1.0.jar business_lib
/gson-2.8.0.jar business_lib/commons-lang3-3.3.2.jar business_lib/txr
edis.jar business_lib/jedis-2.9.0.jar business_lib/ini4j-0.5.4.jar bu
siness_lib/txini-1.0.jar business_lib/cglib-nodep-2.1_3.jar business_
lib/rpc.jar business_lib/protocol-1.0.18.jar
Main-Class: wxtx.sms.com.domain.TXServerMain

其中,Class-Path下的路径为设置为当前java项目运行的classpath。
“.”的所用为使当前路径的文件设置入classpath,因此根目录的配置文件可以被jar通过classpath获取。

3、方式2(推荐)

3.1、操作

3.3.1、将项目输出为普通jar包,但不要包含配置文件。
3.3.2、jar包和项目配置文件的结构如下图(当前路径即为项目的classpath),其中项目本身输出的jar包和其依赖包均放在文件夹lib下。

这里写图片描述

3.3.3、输入命令启动项目(wxtx.sms.com.domain.TXServerMain为项目启动入口主类)。

1
java -classpath "lib/*:." wxtx.sms.com.domain.TXServerMain