当前位置: 代码网 > it编程>编程语言>Java > java -jar命令运行 jar包时运行外部依赖jar包的场景分析

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

2025年06月05日 Java 我要评论
java -jar命令运行 jar包时如何运行外部依赖jar包场景:打包发不完,运行时。发现一个问题,java java.lang.noclassdeffounderror: org/apache/c

java -jar命令运行 jar包时如何运行外部依赖jar包

场景:

打包发不完,运行时。发现一个问题,

java java.lang.noclassdeffounderror: org/apache/commons/lang3/arrayutils

显示此,基本表明,没有这个依赖,如果在开发中,在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 -jar 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包要一个一个指定

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包的文章就介绍到这了,更多相关java -jar命令运行 jar包内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com