前尘回顾:

setup.bat

[chenquan@hostuser tartest]$ cat ../setup.sh
javac -encoding UTF-8 -Djava.ext.dirs=./ -d . ./SignNatureTest.java
echo compile finished,generate .class under package test at curdir
java -Djava.ext.dirs=./ test.SignNatureTest

1.生成jar包:sh hello.jar jar.sh

[chenquan@hostuser tartest]$ cat jar.sh 

jar -cvf0m ${1} ./META-INF/MANIFEST.MF .
[chenquan@hostuser tartest]$ ls META-INF/
MANIFEST.MF
[chenquan@hostuser tartest]$ ls test/
SignNatureTest.class
[chenquan@hostuser tartest]$ cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: test.SignNatureTest [chenquan@hostuser tartest]

 2.运行jar 实现jar外部依赖:

准备将上一步生成jar包移动到 外部依赖的jar libs目录内或者 与lib同层级目录都可以,

java -jar -Djava.ext.dirs=./libs   ${i}
如果在libs内 ,命令-Djava.ext.dirs=参数为./ ,如果生成jar与libs同级那么改为./libs 意思就是告诉jar 我的依赖jar包相对于我要执行的jar包的位置在哪里
[chenquan@hostuser tests]$ ll
total 12
-rw-rw-r--. 1 chenquan chenquan 3188 Aug 4 12:06 foo.jar
-rw-rw-r--. 1 chenquan chenquan 3254 Aug 4 12:23 hello.jar
drwxr-xr-x. 4 chenquan chenquan 135 Aug 4 12:14 libs
-rwxrwxrwx. 1 chenquan chenquan 104 Aug 4 12:36 start.sh
[chenquan@hostuser tests]$ ls libs/
commons-codec-1.12.jar commons-lang3-3.9.jar setup.sh SignNatureTest.java tartest test
[chenquan@hostuser tests]$ cat start.sh
#!/bin/bash
for i in "$@"
do
java -jar -Djava.ext.dirs=./libs ${i}
echo "excuting ${i} res is:"
done [chenquan@hostuser tests]$

执行结果,这里我比较懒写的sh文件不用每次敲一遍执行命令:

[chenquan@hostuser tests]$ sh start.sh hello.jar foo.jar
&k1=values1&k2=33
MD5string is: 832c599beef71cce2ca7e3953b4dc5fb2019-08-04 12:50:20excuting hello.jar res is:
&k1=values1&k2=33
MD5string is: 832c599beef71cce2ca7e3953b4dc5fb2019-08-04 12:50:21excuting foo.jar res is:
[chenquan@hostuser tests]$

补充:Classpath

  • Class-Path设置为 . 是为了声明从哪个目录开始查找所有的引用类的jar包所在位置

java -jar命令运行jar包时指定外部依赖jar包 linxux or windows的更多相关文章

  1. Android之查看外部依赖jar的源代码_android private libralies does not allow modifications to source

    在Eclipse中开发android的应用程序时,有时想查看函数的内部实现.可是当在函数上点击ctrl和鼠标左键的时候. 往往出现例如以下提示: Class File Editor Source no ...

  2. java项目打成jar包时引用了第三方jar,此时我们该如何解决呢

    Web项目做多了,反而对单纯的java项目陌生了,今天我们在开发项目的过程中,碰到一个这样的需求:需要将java项目放到linux系统上跑起来,当然这个javaSE项目是带main方法的.我们知道在I ...

  3. Maven打war包时,添加本地jar包

    1.在项目根目录中新建lib文件夹,添加jar包 2.在pom.xml文件中添加dependency <dependency> <groupId>com.oracle</ ...

  4. 当安装、卸载件包时,出现依赖问题 error: Failed dependencies

    error: Failed dependencies:…… 依赖关系非常复杂,当你试图先安装任何一个包时都会出现这样的依赖关系错误,这时候你就应该强制安装了,我认为只要你把服务或软件需要的包都装上,强 ...

  5. 当安装、卸载件包时,出现依赖问题 error: Failed dependencies解决办法

    error: Failed dependencies:-- 依赖关系非常复杂,当你试图先安装任何一个包时都会出现这样的依赖关系错误,这时候你就应该强制安装了,我认为只要你把服务或软件需要的包都装上,强 ...

  6. centos7下将java -jar命令运行一个项目做成systemd服务

    有些时候运行一个java项目在linux下通过一条简单的java命令即可,如: #nohup java -jar jenkins.war & ###这里为后台运行jenkins 在此背景下,j ...

  7. 在下载jar包时,要有三个包,分别为使用的把class、查看文档的api、查看源代码的资源包

    字节码包: spring-webmvc-4.1.6.RELEASE.jar 文档包:    spring-webmvc-4.1.6.RELEASE-javadoc.jar 资源包:    webmvc ...

  8. ASP.NET Core 如何在运行Docker容器时指定容器外部端口

    前面我写了一系列关于持续集成的文章,最终构建出来的镜像运行之后,应该会发现每次构建运行之后端口都变了,这对于我们来说是十分不方便的,所以我们可以通过修改docker compose的配置文件来完成我们 ...

  9. ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)

    前面我写了一系列关于持续集成的文章,最终构建出来的镜像运行之后,应该会发现每次构建运行之后端口都变了,这对于我们来说是十分不方便的,所以我们可以通过修改docker compose的配置文件来完成我们 ...

随机推荐

  1. vue.js + element中el-select实现拼音匹配,分词、缩写、多音字匹配能力

    1.既然要用到拼音搜索,我们就需要一个拼音库,在这里我推荐一个第三方包:https://github.com/xmflswood/pinyin-match,在这里首先对这个包的开发者表示万分的感谢. ...

  2. CentOS7下MariaDB数据库安装及配置

    前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存 ...

  3. Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板

    Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板 1.中间件(重要): 在Django的setting中有个MIDDLEWARE列表,里面的东 ...

  4. util之Map

    1.定义 Map<String, Integer> map = new HashMap<String,Integer>(); 2.判断map中是否存在某个键的值: if(map ...

  5. wireshark抓pc上的包

    简介:wirkshark是全世界最广泛的网络封包分析软件之一. 软件用途: 网络管理员:我用它检测网络问题, 网络安全工程师:我用它检查资讯安全相关问题, 开发者:我用它为新的通讯协定除错, 普通使用 ...

  6. 怎么把项目发布到github上

    方法一:在github上新建一个项目,然后在本地任意个文件夹(最好新建)右键 git bash here   ,再之后 git clone https://github.com/CKTim/BlueT ...

  7. winform学习(6)控件的对齐、比例、定位操作

    窗体控件的常用操作 选中一个控件,按住Ctrl再点选另一个控件(此时编辑的是第二个控件,当使用框选选中多个控件时,编辑的是黑色锚点的控件) 代码中的居顶和居底: 控件标识符.BringToFront( ...

  8. MYSQL导入CSV格式文件数据执行提示错误(ERROR 1290): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement.

    MYSQL导入CSV格式文件数据执行提示错误(ERROR 1290): The MySQL server is running with the --secure-file-priv option s ...

  9. lminus

    lminus是Synopsy自带的tcl list 操作command. 顾名思义,可以将两个list相减,即过滤掉两个list中相同的element,生成一个新的list,其实是用lsearch与l ...

  10. IntelliJ IDEA 2017.3尚硅谷-----如何创建模块