Springboot 项目一般是以 java -jar 形式运行的,解压后 BOOT-INF/lib 目录下有依赖的所有 jar 包。我的需求是不解压直接读取BOOT-INF/lib 下面的包。

参考这两篇文章后找到了解决方案,代码如下:

SpringBoot项目读取依赖jar包中的文件https://blog.csdn.net/songzehao/article/details/120560678
Classpath resource not found when running as jarhttps://stackoverflow.com/questions/25869428/classpath-resource-not-found-when-running-as-jar

ClassLoader defaultClassLoader = ClassUtils.getDefaultClassLoader();
try (InputStream inputStream = defaultClassLoader.getResourceAsStream("BOOT-INF/lib/asm-7.1.jar");) {File somethingFile = new File("test.jar");assert inputStream != null;FileUtils.copyInputStreamToFile(inputStream, somethingFile);
} catch (IOException e) {throw new RuntimeException(e);
}

接着还有另外一个需求,判断当前运行环境是不是 IDE,只需要在非 IDE 环境下读取 lib 下 jar 包。参考 这两篇文章。两个方法都能满足我的需求,我选择了第一种。代码如下:

判断 Java 程序的运行方式, file(在IDE中运行) 或 jar(以jar包方式运行)https://blog.csdn.net/mrathena/article/details/124413570

如何判断当前Java代码是否运行在IDEA内https://blog.csdn.net/monarch91/article/details/124721203

方法一:

ClassLoader defaultClassLoader = ClassUtils.getDefaultClassLoader();
if (Objects.equals(defaultClassLoader.getResource("").getProtocol(), "jar")) {System.out.println("jar 包运行");
} else {System.out.println("非 jar 包运行");
}

方法二:

try {Class.forName("com.intellij.rt.execution.application.AppMainV2");System.out.println("in idea");
} catch (ClassNotFoundException ignored) {System.out.println("not in idea");
}

SpringBoot 读取 jar 包中 BOOT-INF/lib 下的 jar包相关推荐

  1. 解决URL存在特殊符号、异步线程池配置、动态加载lib下所有jar包

    一.解决URL存在特殊符号|{}?&.URL中包含%2F.URL中包含%5C import lombok.extern.slf4j.Slf4j; import org.springframew ...

  2. 既使用maven编译,又使用lib下的Jar包

    既使用maven编译,又使用lib下的Jar包 在项目开发中,项目用maven管理,是一个maven项目.  一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个 ...

  3. SpringBoot读取properties文件中的值

    SpringBoot读取properties文件中的值 properties文件(test.properties) xx.xyz.url=http://www.xxx.com/ xx.xyz.name ...

  4. springboot读取linux文件_spring\-boot以jar包方式时读取resource或是template文件 | Prayer's Laputa...

    现象 以jar包方式部署系统,想读取resource或是template下面的文件时,报 File Not Found 我遇到的情况是,整个项目达成了一个包,在开发环境(windows + idea) ...

  5. 智能一代云平台(四十):Maven项目如何将lib下依赖的包打印在manifest文件中

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 今天突然发现在Pom文件中进行相关的设置,可以将自己所依赖的jar包在Manifest ...

  6. 获取jar包中的文件,及遍历jar包中的文件

    获取jar包中的文件 ClassPathResource resource1 = new ClassPathResource("文件夹" + File.separator + &q ...

  7. SpringBoot读取properties配置文件中的数据

    常用三种方法: 1.@Value注解读取 2.使用Environment读取 3.使用@ConfigurationProperties注解读取 代码: 链接:https://pan.baidu.com ...

  8. java调用包中的类_java调用另一个包中的类的方法

    java调用另一个包中的类的方法 发布时间:2020-05-18 15:04:40 来源:亿速云 阅读:199 作者:小新 今天小编给大家分享的是java调用另一个包中的类的方法,相信很多人都不太了解 ...

  9. 解决maven打包 无法加载本地lib/下的jar包问题(程序包XXX不存在)

    在进行抖音支付时,引用了tt_pay-1.0.5.jar,在maven打包时,报XXX不存在 一.目录结构 二.解决方法 <build><finalName>xiaoya-ap ...

  10. Android--------从一个包中的Avtivity创建另外另外一个包的Context

    Android中有Context的概念,想必大家都知道.Context可以做很多事情,打开activity.发送广播.打开本包下文件夹和数据库.获取classLoader.获取资源等等.如果我们得到了 ...

最新文章

  1. 关于outlook2010帐户设置
  2. Elasticsearch 常用配置参数总结
  3. 服务器软RAID和LVM的实现
  4. HashMap两种遍历数据的方式
  5. 这六个问题,让物理学家寝食难安
  6. 华为内部存储转sd卡_华为tit al00怎么将手机存储内容转移到sd卡
  7. 干货| LeNet-5模型详解(附Python详细代码及注释)
  8. vue3.0 word导出
  9. Mybaits 3.2.6设计的一个缺陷,欢迎拍砖交流
  10. vmware虚拟机连接网络
  11. 安装过MongoDB(4版本)重新安装时出现错误Verify that you have sufficient privileges to start system services如何解决
  12. Jcrop实现图片裁剪
  13. 纸筒制作机器人_卡纸手工制作方法_机器人DIY制作教程图解
  14. 电脑技术员联盟 GhostXp Sp3 装机版V5.1
  15. c++——简单计算器
  16. 什么类型的APP适合推广
  17. Verilog中if-else和case对比
  18. AppleScript 小试牛刀
  19. android实现悬浮按钮功能
  20. OpenGL南邮计算机图形学实验报告三——实现类似地月系统的两物体环绕移动

热门文章

  1. Hibernate框架简介④
  2. ubuntu检查端口是否开启_技术|使用 nc 命令检查远程端口是否打开
  3. 机器学习笔记(十六):多项式回归、拟合程度、模型泛化
  4. 电源纹波怎么测量,纹波和噪声的区别
  5. Springcloud config 出现Error occured cloning to base directory.
  6. 《从0到1上线微信小游戏》第七节 微信排行榜和好友分享功能
  7. 寄存器 SRAM DRAM存储单元区别
  8. Laravel Eloquent ORM字段处理
  9. 程序员需知的9个编程学习官网,建议收藏
  10. python游走代码_用Python模拟随机游走(Random walks)