0
点赞
收藏
分享

微信扫一扫

spring-boot项目直接读取jar包内文件的最简单方法

未定义变量 2021-09-18 阅读 52
日记本

假设有一个jar包,里面有一个test.txt,里面有一行字符串123abc,现在要在一个以jar命令运行的spring-boot项目环境中读取,要怎么做?


分两种情况:

  1. jar包在项目外
  2. jar包在项目内

假设把这个jar包,一个放到D盘的test目录下,一个放到spring-boot项目resources目录下的lib子目录里,可以使用以下两种方法分别读取:

@SpringBootApplication
public class DemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

    public static void main(String[] args) throws IOException {
        SpringApplication.run(DemoApplication.class, args);
        var outerUrl = new URL("jar", null, -1, "file:/D:/test/test-1.0-SNAPSHOT.jar!/test.txt");
        var innerUrl = DemoApplication.class.getClassLoader().getResource("lib/test-1.0-SNAPSHOT.jar!/test.txt");
        logger.info("outerStr:{} and innerStr:{}", new String(outerUrl.openStream().readAllBytes()),
                new String(innerUrl.openStream().readAllBytes()));
    }
}

使用mvn clean package打包项目,然后使用java -jar xxx.jar执行该项目文件,观察日志文件就会发现,两种方式都成功了:


举报

相关推荐

0 条评论