Springboot项目打包部署异常:java.io.FileNotFoundException: file:/xxx/xxx.jar!/BOOT-INF/classes!/xxx.yml

Springboot打jar包部署异常

2020-04-21 10:13:39.057[http-nio-8888-exec-9] ERROR jar:file:/opt/intelligence/intelligence_analysis-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/application.properties (没有那个文件或目录)
java.io.FileNotFoundException: jar:file:/opt/intelligence/intelligence_analysis-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/application.properties (没有那个文件或目录)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at com.intple.common.config.PropertyPlaceholderConfigurer.<clinit>
        ...

项目中读取配置文件的代码为:new FileInputStream(path)。idea环境中可以正常使用,打成jar包后运行就会抛异常,
使用下面两种方法可以解决:

InputStream is=this.getClass().getResourceAsStream(path); 
BufferedReader br=new BufferedReader(new InputStreamReader(is)); 
Resource resource = new ClassPathResource(path);
InputStream inputStream = resource.getInputStream();

原因是:在调试过程中(没有打包成Jar),文件是真实存在于磁盘的某个目录。此时通过获取文件路径,是可以正常读取的,因为文件确实存在。
而打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件。在磁盘是没有真实路径的。无法根据路径获取文件。
而InputStream inputStream=this.getClass().getResourceAsStream("");会指定要加载的资源路径与当前类所在包的路径一致。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这个问题可能是由于文件路径引用的问题导致的。在IntelliJ IDEA中调试时,项目的文件路径是相对于项目根目录来解析的,而打成jar包后,文件路径需要相对于jar包所在的位置来解析。 在您的情况下,程序提示异常java.io.FileNotFoundException,说明它无法找到jar包中的某个文件:ip2region.xdb。这个文件可能是您的代码中使用到的一个地理位置数据库文件。 解决这个问题的方法是确保您的代码正确地引用了ip2region.xdb文件,并且在构建jar包时将该文件正确地包含在jar包中。 您可以按照以下步骤来处理这个问题: 1. 确认ip2region.xdb文件在项目中的位置,并确保代码正确地引用了该文件。 2. 在IntelliJ IDEA中,打开"Project Structure"(项目结构)对话框,检查您的构建设置。确保将ip2region.xdb文件包含在构建过程中,并将其正确地打包jar包中。 3. 重新构建jar包,并确保ip2region.xdb文件被正确地放置在jar包中。 4. 运行打包后的jar包,并再次调用接口,看是否还会出现相同的异常。 如果问题仍然存在,请检查代码中对ip2region.xdb文件的引用是否正确,并确保该文件被正确地包含在jar包中。另外,还可以尝试使用绝对路径或者相对于jar包的相对路径来引用该文件,以确保正确地定位到文件位置。 希望以上信息能帮助您解决问题。如有更多疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值