You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行依赖JRE ext目录外部JAR的可执行JAR需手动指定依赖吗?

关于JRE扩展目录下依赖加载的问题解答

Great question! Let’s break this down clearly for your Java 8 environment:

  • 核心结论:你完全不需要在启动可执行JAR时显式指定这些位于/usr/lib/jvm/jre-1.8.0-oracle-1.8.0.151-1jpp.5.el7.x86_64/lib/ext下的依赖JAR。
  • 原因:这个目录是Oracle JRE 1.8中**扩展类加载器(Extension Class Loader)**的默认扫描路径。JVM启动时会自动加载该目录下的所有JAR文件,你的应用代码可以直接引用这些JAR中的类,就像它们是JRE核心类库的一部分一样。

额外注意事项

  1. 版本限制:这个自动加载机制只在Java 8及更早版本生效。从Java 9开始,JDK模块化系统(JPMS)取代了传统的扩展目录机制,lib/ext目录不再被自动扫描——不过你当前用的是Java 8,所以完全没问题。
  2. 不推荐长期依赖该目录:除非这些JAR是系统级的通用扩展,否则尽量不要把应用专属依赖放在这里,原因包括:
    • 容易引发类版本冲突:如果其他应用也使用这个目录的JAR但版本不同,会导致难以排查的类加载问题。
    • 维护性差:依赖与应用分离,部署和版本管理不如使用-cp/--class-path参数,或者通过构建工具(如Maven/Gradle)把依赖打包进可执行JAR(比如shade插件)来得清晰可控。

内容的提问来源于stack exchange,提问作者AlexZhur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:17:59