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

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

作者: 湘西刺客王胡子 | 来源:发表于2021-03-16 14:56 被阅读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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/hwnrcltx.html