前尘回顾:

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. WPF学习笔记三之绑定

    1.绑定模式 <TextBlock Margin="10" Text="LearningHard" Name="lbtext" Fon ...

  2. pyodbc 向excel中读写数据

    import pyodbc conn_info=( 'DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};''DBQ=[Sh ...

  3. Jquery动态改变my97datepicker的日期形式

    先要解绑触发事件: $('#start').unbind('focus'); 然后再绑定触发事件: $('#start').bind('focus',function(){WdatePicker({s ...

  4. FLAG-回归C++,JAVA什么的等学校教吧

    以后刷OJ还是写C++,昂啊! 除非我觉得JAVA更好用

  5. 20191225_Python构造函数知识以及相关注意事项

    Python构造函数格式为__init__() 注:下划线为两个而不是一个 可以有无参构造 instance: class city: def printout(self,first,second): ...

  6. JavaWeb项目中的Servlet

    1.创建Servlet 2.在jsp中用ajax调用 $.post("<%=request.getContextPath()%>/AjaxValidationServlet&qu ...

  7. ansible playbook详解

    ansible playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml基础语法 语法 描述 缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs键 ...

  8. Integer.parseInt(s)、Integer.valueOf(s)与new Integer()的异同

    我们在开发过程中,很多时候需要将String类型数据转换成Integer,而比较常用的方式就是--nteger.parseInt(s).Integer.valueOf(s)与new Integer() ...

  9. Unity手机端手势基本操作

    主要有单指移动3D物体.单指旋转3D物体.双指缩放3D物体. 基类 using UnityEngine; using System.Collections; /// <summary> / ...

  10. JavaWeb01-动态网页

    01.动态网页的优势 动态网页是在服务器端运行的程序!随不同用户,不同条件 返回不同的结果! 001.交互性:网页会根据用户的要求和选择而动态的改变和现实网页内容! 002.自动更新:无需改变页面的代 ...