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

2021-03-16  本文已影响0人  湘西刺客王胡子

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

image.png
分两种情况:
  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执行该项目文件,观察日志文件就会发现,两种方式都成功了:


image.png
上一篇下一篇

猜你喜欢

热点阅读