教你代码中获取当前 JAR 包的存放位置

 更新时间:2023年08月23日 08:37:11   作者:AnAnCode  
这篇文章主要介绍了如何获取当前JAR包的存放位置,要获取当前运行的 JAR 包所存放的位置,可以使用 ProtectionDomain 和 CodeSource 类,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

如何获取当前 JAR 包的存放位置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

代码中如何获取打包后的jar包存放的位置?

要获取当前运行的 JAR 包所存放的位置,可以使用 ProtectionDomain 和 CodeSource 类。

代码:

import java.net.URL;
import java.security.CodeSource;
import java.security.ProtectionDomain;
public class Main {
    public static void main(String[] args) {
        // 获取当前类的保护域
        ProtectionDomain protectionDomain = Main.class.getProtectionDomain();
        // 获取代码源
        CodeSource codeSource = protectionDomain.getCodeSource();
        // 获取代码源的位置
        URL location = codeSource.getLocation();
        // 获取 JAR 包的路径
        String jarPath = location.getPath();
        System.out.println("JAR Path: " + jarPath);
    }
}

注意:这种方法适用于独立的可执行 JAR 包。如果你的代码是作为依赖项运行在其他项目或容器中,可能会得到不同的结果。在这种情况下,获取 JAR 包位置的方法可能会有所不同。

如何找到jar包在本地仓库的位置

第一种:怎么定位pom文件的某个依赖在本地仓库的位置

鼠标选中此依赖,就会弹出一个弹框,弹框里的路径就是此依赖在本地仓库的位置.

即使不选中依赖弹出弹框,此依赖的groupid + artifactid+version 所对应的内容加起来就是此依赖所指向的本地仓库的jar包的位置.

第二种:怎么定位右侧maven窗口的某个依赖在本地仓库的位置

可以看到,下面划线的名称就是在本地仓库的路径位置.

第三种:报错org.apache.xmlgraphics.fonts.Glyphs这个路径下的Glyphs类找不到

上面报错的路径并不是在本地maven仓库的绝对路径.而是此Glyphs类在自己的jar包中的类路径,

怎么找呢,就是随便找一个项目中的存在的类,然后 import org.apache.xmlgraphics.fonts.Glyphs;

导入这个类

 然后ctrl +  左键, 找到这个类,然后点击定位按钮,就能看到这个类的所属的jar包在本地仓库的绝对路径了.

其他的后面再补充.

到此这篇关于如何获取当前 JAR 包的存放位置的文章就介绍到这了,更多相关JAR 包的存放位置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用@slf4j找不到符号log的问题及解决

    使用@slf4j找不到符号log的问题及解决

    这篇文章主要介绍了使用@slf4j找不到符号log的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • nacos配置在代码中引用的方法讲解

    nacos配置在代码中引用的方法讲解

    这篇文章主要介绍了nacos配置在代码中如何引用,如果主配置中配置的内容和拓展配置的内容重复则按主配置的配置 ,如果拓展配置中的内容和另一个拓展配置中的内容重复,则按下标大的配置作为最终的配置,对nacos配置代码引用相关知识感兴趣朋友一起看看吧
    2022-12-12
  • SpringBoot如何动态改变日志级别

    SpringBoot如何动态改变日志级别

    这篇文章主要介绍了SpringBoot如何动态改变日志级别,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-12-12
  • Javaweb应用使用限流处理大量的并发请求详解

    Javaweb应用使用限流处理大量的并发请求详解

    这篇文章主要介绍了Javaweb应用使用限流处理大量的并发请求详解,还是挺不错的,这里分享给大家,供需要的朋友参考。
    2017-11-11
  • springboot HandlerIntercepter拦截器修改request body数据的操作

    springboot HandlerIntercepter拦截器修改request body数据的操作

    这篇文章主要介绍了springboot HandlerIntercepter拦截器修改request body数据的操作,具有很好的参考价值,希望对大家有所帮助。
    2021-06-06
  • Java中定时器java.util.Timer的简单模拟

    Java中定时器java.util.Timer的简单模拟

    在Java中,定时器(Timer)是一个工具类,用于安排任务在指定时间后执行或以指定的时间间隔重复执行,本文就来讲讲如何简单模拟实现定时器吧
    2023-07-07
  • Java编程线程间通信与信号量代码示例

    Java编程线程间通信与信号量代码示例

    这篇文章主要介绍了Java编程线程间通信与信号量代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • SpringBoot集成LiteFlow工作流引擎的完整指南

    SpringBoot集成LiteFlow工作流引擎的完整指南

    LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解SpringBoot集成LiteFlow的全过程,助大家轻松驾驭轻量级流程编排
    2025-06-06
  • RocketMQ实现随缘分BUG小功能示例详解

    RocketMQ实现随缘分BUG小功能示例详解

    这篇文章主要为大家介绍了RocketMQ实现随缘分BUG小功能示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java命名规范

    Java命名规范

    本文主要介绍了Java命名规范。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论