SpringBoot获取jar文件所在目录

这篇具有很好参考价值的文章主要介绍了SpringBoot获取jar文件所在目录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一开始是想通过以下方法获取:
java.lang.System.out.println(java.lang.System.getProperty("user.dir"));

例如我把jar文件放在/opt/test/目录下,并且把当前工作目录定位在/opt/test/目录下,获取到的结果确实是:/opt/test/

但是!

但是!

但是!当我把工作目录切换(cd /home/)到其它地方:例如:/home/

这时候再次通过上面的方式获取到的结果就不是理想的结果了,而是:/home/

之后我再继续研究可以通过第二个方法获取到理想的结果:文章来源地址https://www.toymoban.com/news/detail-491779.html

private static final String APPLICATION = "/application.yml";
private static final String JAR = "jar";
private static final String FILE = "file:";
java.lang.Class<?> clazz = SpringApplication.class;
java.lang.ClassLoader classLoader = clazz.getClassLoader();
java.net.URL url = classLoader.getResource(APPLICATION);
if (url != null) {
    java.lang.String path = url.getPath();
    java.lang.String[] nameArray = path.split(java.io.File.separator);
    int i = 0;
    java.lang.StringBuilder stringBuilder = new java.lang.StringBuilder();
    for (; i < nameArray.length; i ++) {
        java.lang.String name = nameArray[i];
        if (name.contains(JAR)) {
            break;
        } else {
            stringBuilder.append(name).append(java.io.File.separator);
        }
    }
    java.lang.String target = stringBuilder.toString();
    if (target.startsWith(FILE)) {
        target = target.substring(FILE.length());
    }
    java.lang.System.out.println("target->" + target);//这里打印输出:/opt/test/
} else {
    java.lang.System.out.println("url is null");
}

到了这里,关于SpringBoot获取jar文件所在目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系列二十九、Spring Boot打成jar包后,resources目录下的资源文件获取不到

            在做公司业务开发时,有一个地方是使用EasyExcel模板技术进行文件上传,测试环境是OK的,但是和前后端联调验证测试通过后,上传到生产环境就不行了,后来也是花费了很多时间才找出其中的问题,以下为解决方案。  

    2024年02月02日
    浏览(53)
  • SpringBoot 打成jar包后如何获取jar包Resouces下的文件

    获取resouces下的文件使用以下代码即可读取,如果需要变成file传入其他的方法中,需要创建临时文件将输入流文件 复制到 临时文件中,并传入相关方法,最后删除临时文件即可。不能通过ClassPathResouce对象直接获取 文件File

    2024年02月19日
    浏览(41)
  • php通过IP获取用户当前所在城市

    php获取当前用户所在城市   php通过ip免申请api获取所在城市的代码包括省市区sql数据  

    2024年02月16日
    浏览(47)
  • Oracle修改数据文件所在目录的挂载点小结

    如何修改Oracle数据库文件所在目录的挂载点名称。这里先简单介绍一下背景情况,这套数据库是刚搭建不久的一套Oracle 19c单机的UAT,数据库安装在/opt目录下,$ORACLE_HOME目录为/opt/oracle19c/product/19.3.0/db_1。由于前期挂盘,设置挂载点命名没有严格按规范操作,将数据文件和归档

    2024年01月25日
    浏览(40)
  • Nginx通过用户IP获取所在国家及地理位置

    Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。它最初设计目的是为了解决C10k问题,即如何支持10,000个以上的并发连接。Nginx采用了事件驱动的异步非阻塞模型,可以在消耗较少的系统资源下处理更多的并发连接。由于其高性能和可靠性,Nginx逐渐成为了现代Web架构

    2024年02月09日
    浏览(50)
  • 服务器获取Jar包运行目录

    System.getProperty(\\\"user.dir\\\") 可直接获取Jar包启动运行的目录 (/usr/local/test/app.jar — /usr/local/test) 与方法1不同,获取的是jar包真实运行的路径(!/BOOT-INF/classes!/) 3.总结 ProtectionDomain 和 CodeSource 类的主要作用是获取 当前运行应用程序 的 JAR 包路径。与直接使用 System.getProperty(“

    2024年02月04日
    浏览(33)
  • Linux 下获取进程所在文件的路径

    以top进程为例: top进程的pid为31386 ,可以通过查看 /proc/pid/exe: 在Linux系统中,每个进程都有一个/proc/pid/exe文件,它是一个符号链接文件,指向当前进程的可执行文件。 更具体地说,/proc/pid/exe文件是一个符号链接文件,它的内容是一个指向当前进程可执行文件的绝对路径的

    2024年02月09日
    浏览(50)
  • Powershell删除文本指定内容所在行以下内容

    需求:批量获取文本指定内容所在行以下内容(含当前行)   解决方案:使用Powershell脚本处理   案例: 获取当前文件夹下所有txt文件 含文本\\\"4\\\"所在行 以下内容(含当前行) 如果有多行包含文本\\\"4\\\",取第一个所在行以下内容(含当前行)   1.查看当前文件夹内容   2.右键执

    2024年01月20日
    浏览(39)
  • vscode 打开文件时如何在资源管理器中展开文件所在的整个目录树(包含node_modules)

    如题。去 首选项 -- 设置 中 搜索 “Auto Reveal”,然后选true,注意把下面的Auto Reveal Exclude排除项中的node_modules去掉,这样才能定位到node_modules中的文件。 **/node_modules

    2024年02月15日
    浏览(43)
  • 【[获取文件失败] 以下文件已被配置忽略打包上传,模拟器无法获取】解决方法【官方】

    希望本文章对大家有用,解决开发中遇到的难题,如有最新解决方案,也欢迎大家评论,看到即时更新。 * 微信开发工具更新为最新版 1.05.22.xxxx 版本时,因小程序开发不规范 存在以下问题, 存在app.json中未配置页面路径 存在自定义js 使用 import 导入 误识别情况 存在引入三

    2024年02月09日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包