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

在我的 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?

这是我的文件目录:

http://img2.mukewang.com/61a72d8f0001777107420682.jpg

开满天机
浏览 164回答 2
2回答

吃鸡游戏

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因为这在打包时不起作用。

慕的地6264312

  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;在评论中讨论希望这可以帮助你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java