为了账号安全,请及时绑定邮箱和手机立即绑定

我有一个关于如何运行 springboot 项目的问题

我有一个关于如何运行 springboot 项目的问题

开满天机 2021-12-01 16:03:29
在我的 Web 应用程序中,我想读取src/main/resource/static/doc 中的 excel 文件,所以我使用String basePath = ClassLoader.getSystemResource("").getPath();获取资源路径并读取它。它在我的 IDE IDEA 中工作,我只是运行它并可以获得 excel。然而,当我java -jar lab.jar用来运行一个spring boot项目时,它抛出了一个NullpointerException,但是当我使用String basePath = ClassLoader.getSystemResource("application.properties").getPath();打印出来,看到/Users/zhangzhikai/lab-center/target/lab.jar!/BOOT-INF/classes!/application.properties。为什么我不能从罐子里得到 excel?这是我的文件目录:
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

File在 Java 中使用 a 时,它必须指向操作系统文件系统上的物理文件。运行未打包的应用程序时就是这种情况,但是在运行时jar它不是物理文件,因此将无法工作(导致错误或空指针异常)


使用ResourceSpring的类之一来访问资源。在这种情况下,因为它来自您想要使用的类路径ClassPathResource。然后直接使用InputStream读取文件。


Resource input = new ClassPathResource(“static/doc/modal/model.xls”);

InputStream in = input.getInputStream();

// Use InputStream to read file

这将作为打包和未打包的应用程序工作。不要使用,getFile因为这在打包时不起作用。


查看完整回答
反对 回复 2021-12-01
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

  File xlsfile = new ClassPathResource("/doc/modal/model.xls").getFile();

     //also check the path

    //String currentPath = xlsfile .getAbsolutePath(); 

    File newXls=new File("classpath:static/doc/temp");

    newXls=xlsfile;

在评论中讨论希望这可以帮助你。


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信