大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢?

  • -classpath,命令格式:# java -classpath ,使用";"分隔
  • -cp ,这个命令一看就是-classpath的缩写,当然用途是一样的

例如:
java -cp “.\a.jar;.\b.jar” -jar myjar.jar MainClass # java -cp .;c:\dir1\lib.jar Test

-Djava.ext.dirs,命令格式:# java -Djava.ext.dirs=

下面说一下区别:
-cp 和 -classpath 一样,是指定java类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,
window上使用分号“;” 分隔,linux上是使用冒号“:”分隔。不支持通配符,也不支持文件夹的方式,需要列出所有jar包,
用点“.”代表当前路径,这个如果要引用好多jar包,要一个个加入到路径里,那写起来就头疼。

如:java -cp .;c:\classes\myClass.jar;d:\classes\1.jar packname.mainclassname。

-Djava.ext.dirs是通过设置系统属性的方式也加载jar包的,这个级别就有点高了,和-classpath的区别在于-Djava.ext.dirs会覆盖Java本身的ext设置,java.ext.dirs指定的目录由ExtClassLoader加载器加载,
如果您的程序没有指定该系统属性 -Djava.ext.dirs=sss/lib 那么该加载器默认加载 J A V A H O M E / l i b / e x t 目录下的所有 j a r 文件。但如果你手动指定系统属性且忘了把 J A V A H O M E / l i b / e x t 路径给加上,那么 E x t C l a s s L o a d e r 不会去加载 JAVA_HOME/lib/ext目录下的所有jar文件。 但如果你手动指定系统属性且忘了把JAVA_HOME/lib/ext路径给加上,那么ExtClassLoader不会去加载 JAVAH​OME/lib/ext目录下的所有jar文件。但如果你手动指定系统属性且忘了把JAVAH​OME/lib/ext路径给加上,那么ExtClassLoader不会去加载JAVA_HOME/lib/ext下面的jar文件,这意味着你将失去一些功能,

例如java自带的加解密算法实现。具体说是jre的ext目录:D:\java\jdk1.8.0_40\jre\lib\ext。一般情况下普通程序运行并无差异,因为可以看到ext目录下也就几个jar,但是如果使用java.security相关类时,也就是使用加密解决相关的算法,就会发现-Djava.ext.dirs会导致library找不到相关类而报错。如报错:
NoSuchAlgorithmException: Cannot find any provider supporting RSA
这个错误当然也有可能是security\java.security文件中配置错误引起 。

当然也有解决方法:
1、将ext下相关jar包复制到新的ext director。
2、在-D.java.ext.dirs中配置多个目录。可以使用冒号分隔(windows下使用分号)。比如:-Djava.ext.dirs=directoryA:directoryB


JAVA 命令参数详解:
1、-D= set a system property 设置系统属性。

java -D参数简化加入多个jar
java命令引入jar时可以-cp参数,但时-cp不能用通配符(多个jar时什么烦要一个个写,不能*.jar),面通常的jar都在同一目录,且多于1个。前些日子找到(发现)-Djava.ext.dirs太好。
如: java -Djava.ext.dirs=lib MyClass

可以在运行前配置一些属性,比如路径什么的。
java -Dconfig=“d:/config/config.xml” Abc
这样在Abc中就可以通过System.getProperty(“config”);获得这个值了。
在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机之上的应用程序可用
当虚拟机报告类找不到或类冲突时可用此参数来诊断来查看虚拟机从装入类的情况。

另外,javac -d <目录> 指定存放生成的类文件的位置

Key                  Meaning
file.separator      Character that separates components of a file path. This is "/" on UNIX and "\" on Windows.
java.class.path     Path used to find directories and JAR archives containing class files. Elements of the class path are separated by a platform-specific character specified in the path.separator property. java.home            Installation directory for Java Runtime Environment (JRE)
java.vendor         JRE vendor name
java.vendor.url     JRE vender URL
java.version        JRE version number
line.separator      Sequence used by operating system to separate lines in text files
os.arch             Operating system architecture
os.name             Operating system name
os.version          Operating system version
path.separator      Path separator character used in java.class.path
user.dir            User working directory
user.home           User home directory
user.name           User account name

所谓的
system porperty,system 指的是 JRE (runtime)system,不是指 OS。

System.setProperty(“net.jxta.tls.principal”, “client”);
System.setProperty(“net.jxta.tls.password”, “password”);
System.setProperty(“JXTA_HOME”,System.getProperty(“JXTA_HOME”,“client”));
可以利用系统属性来加载多个驱动

java ext.dirs_关于-Djava.ext.dirs使用及JAVA 命令参数详解System.setProperty相关推荐

  1. java spring启动和终止_springBoot jar启动以停止脚本参数详解

    一.启动脚本 Springboot 项目打成jar包后,在Linux环境上一般有如下几种启动方式: 1. "java -jar XXX.jar " 命令结尾没有 "&am ...

  2. java ext.dirs_关于-Djava.ext.dirs使用问题

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath , ...

  3. java命令行参数详解

    java 命令参数详解_赶路人儿的博客-CSDN博客_java命令行参数java命令用于启动 java 应用:它首先会启动 java 运行时环境(JRE),然后加载指定的类,调用类的main()方法. ...

  4. Java调用SMSLib用单口短信猫发送短信详解

    技术园地 当前位置:短信猫网站主页 > 技术园地 > [转载]Java调用SMSLib用单口短信猫发送短信详解 发布时间:2017/02/09 点击量:620 SMSLib是Apache的 ...

  5. Java Spring Data Redis实战与配置参数详解 application.properties...

    Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...

  6. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  7. java调用js匿名函数参数,js匿名函数作为函数参数详解

    由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...

  8. Java中常见RuntimeException与其他异常表及Exception逻辑关系详解

    Java中常见RuntimeException与其他异常表及Exception逻辑关系详解 前言 常见`RuntimeException` 其他错误类型 `Error`类 `Exception`类 E ...

  9. mencoder和ffmpeg参数详解 (Java处理视频)

    本系列文章导航 Windows下FFmpeg快速入门 ffmpeg参数解释 mencoder和ffmpeg参数详解(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视 ...

最新文章

  1. 漫话:如何给女朋友解释什么是系统可用性?
  2. C#压缩解压zip 文件
  3. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5
  4. 汉字为什么能流传至今_汉字能流传至今,比毛不易还不易,它的同龄字统统都死掉了...
  5. 这三种策略可以帮助女性在科技领域蓬勃发展
  6. 凭“难听”上热搜的 idol 们,不如考虑下让 Transformer 帮您作曲?
  7. windbg-!address、!vadump、!vprot(读取内存状态)
  8. 【AI视野·今日CV 计算机视觉论文速览 第242期】Mon, 14 Feb 2022
  9. 文本分类-TextCNN
  10. 【紫书第十章】数论与概率入门
  11. 实用主义学python 云盘_麻瓜编程实用主义学Python2018,资源教程下载
  12. 仿真技术在控制系统中的应用 ---飞机姿态控制仿真( 俯仰角)
  13. python获取cpu温度 window_使用python从windows10运行系统读取CPU温度
  14. 华为云服务器上搭建FTP站点
  15. 线性代数 or 量子力学 ?(七——薛定谔方程详解)
  16. 微服务[学成在线] day13:使用FFmpeg进行格式转换以及m3u8文件生成、文件分块上传接口实现
  17. 1.3寸IIC OLED SH1106和Arduino库的适配性鸡肋问题
  18. The process has been signaled with signal '5'. 解决办法
  19. 3.1 人工智能定义
  20. 请问现在好多抖音巨量广告落地页pages.tmall.com的页面如何生成

热门文章

  1. 华擎主板的网络唤醒设置。
  2. 【AAAI 2021】多出口架构的知识蒸馏:Harmonized Dense Knowledge Distillation Training for Multi-Exit Architectures
  3. word 要求五十行 50行
  4. invalidate()不起作用
  5. 实际案例说明计算机网络安全,计算机网络安全案例教程
  6. 《Neural Collaborative Filtering》NCF模型的理解以及python代码
  7. html按钮字号,html button样式
  8. 「美版抖音」TikTok工程师2021年赚多少?最高年薪306万,最低77万,还不算股票期权...
  9. 计算机电池电源转换,图吧小白教程 篇七十七:只需一步,延长MACBOOK电池寿命(硬改电源)...
  10. 2021天梯赛L1-079 天梯赛的善良 题解