У меня проблема с тем, как запустить проект Springboot - PullRequest
0 голосов
/ 22 октября 2018

В моем веб-приложении я хочу прочитать файл Excel , который находится в src / main / resource / static / doc, поэтому я использую

String basePath = ClassLoader.getSystemResource("").getPath();

чтобы получить путь к ресурсу и прочитать его.Он работал в моей IDE IDEA, я просто запускаю его и могу получить Excel.

Однако, когда я использую java -jar lab.jar для запуска проекта весенней загрузки, он генерирует исключение NullpointerException, но когда я использую

String basePath = ClassLoader.getSystemResource("application.properties").getPath();

и распечатайте его, я увидел /Users/zhangzhikai/lab-center/target/lab.jar!/BOOT-INF/classes!/application.properties.

Почему я не могу получить Excel из банки?

Вот мой справочник файлов: enter image description here

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

При использовании File в Java он должен указывать на физический файл в файловой системе ОС.Это имеет место при запуске неупакованного приложения, однако при запуске jar оно не является физическим файлом и поэтому не будет работать (что приведет к ошибкам или исключению нулевого указателя)

Использовать одно изResource классов Spring для доступа к ресурсу.В этом случае, поскольку это происходит из classpath, вы хотите использовать ClassPathResource.Затем непосредственно используйте InputStream, чтобы прочитать файл.

Resource input = new ClassPathResource(“static/doc/modal/model.xls”);
InputStream in = input.getInputStream();
// Use InputStream to read file

Это будет работать как упакованное и неупакованное приложение.Не используйте getFile, так как он не будет работать в упаковке.

0 голосов
/ 22 октября 2018
    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;

Как обсуждать в комментариях, надеюсь, это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...