本文主要是介绍java -jar命令运行 jar包时运行外部依赖jar包的场景分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作...
java -jar命令运行 jar包时如何运行外部依赖jar包
场景:
打包发不完,运行时。发现一个问题,
java java.lang.NoClassDefFoundError: org/apache/commons/lang3/ArrayUtils
显示此,基本China编程表明,没有这个依赖,如果在开发中,在maven的pom.XML 中引入即可;
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> <!-- 使用最新版本或适合你项目的版本 --> </dependency>
但是;此时只有jar包,无法修改代码。如何解决呢?
解决:
直接在java -jar test.jar 时,添加参数。
方法一、启动参数添加: -Xbootclasspath/a
java -Xbootclasspath/a:custom-rt.jar -jar test.jar
方法二、使用Extension Classloader来加载
要让Extension Classloader加载你的类,需要:
将你的JAR文件放入:
<JAVA_HOME>/jre/lib/ext
目录(JDK 8及之前)- 或由
java.ext.dirs
系统属性指定的目录
或者运行时指定扩展目录:
java -Djava.ext.dirs=/path/编程to/your/extensions -jawww.chinasem.cnr test.jar
此时此景,只能采用2;值的注意的注意⚠️的是;
使用java.ext.dirs
,需要同时添加 <JAVA_HOME>/jre/lib/ext 和你自己的目录,不然只能使用你自己的目录。
实际语句:
java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/tmp/lib/ -jar test.jar
补充:Java运行jar包指定外部依赖的jar
Java运行jar包指定外部依赖的jar
程序在启动时经常会遇到指定外部依赖jar包的情况。
1. Bootstrap Classloader方式:
//在系统class加载后加载 java -Xbootclasspath/a: yilai1.jar:yilai2.jar: -jar test.jar
注意:依赖的jar包间用冒号分割
缺点:依赖的jar包China编程要一个一个指定
2. Extension Classloader方式:
java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/usr/local/libs -jar test.jar
注意:使用前确保已经配置好jdk环境变量
说明:$JAVA_HOME/jre/lib/ext 的写法时固定的,后面冒号跟上自己存放要依赖的jar包的路径
优点:可以依赖指定路径下的多个jar包
到此这篇关于java -jar命令运行 jar包时如何运行外部依赖jar包www.chinasem.cn的文章就介绍到这了,更多相关java -jar命令运行 jar包内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于java -jar命令运行 jar包时运行外部依赖jar包的场景分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!