gpt4 book ai didi

java - Spring boot,无法读取文件,启动时使用jar包

转载 作者:行者123 更新时间:2023-12-02 02:43:48 25 4
gpt4 key购买 nike

Spring boot,无法读取文件,启动时使用jar包。当我使用 .war 启动时一切正常

这是 war maven pom.xml

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>

但是使用java -jar

enter image description here

我想从 java -jar 开始,现在我需要做什么?Spring Boot版本1.4.4

public void generater(HttpServletResponse response, boolean testMode) {
ExcelTemplateEnum excelTemplate = this.exportTemplate();
FileInputStream is = null;
Workbook workbook = null;
try {
String templateFilePath = this.getTemplateFilePath(excelTemplate);
URL url = ExeclExportHandler.class.getClassLoader().getResource(templateFilePath);
is = new FileInputStream(url.getFile());
ExcelTransformer transformer = this.getExcelTransformer();
// 渲染导出数据
if (isMultipleBeans()) {
List<Map<String, Object>> data = this.renderDataList();
this.checkExportParam(data);
workbook = transformer.transform(is, getTemplateSheetNamesList(), getSheetNamesList(), data);
} else {
Map<String, Object> data = this.renderData();
this.checkExportParam(data);
workbook = transformer.transform(is, data);
}
if (testMode) {
...
} else {
ExcelHelper.setExcelHeader(response, excelTemplate.outname());
workbook.write(response.getOutputStream());
response.flushBuffer();
}
} catch (Exception e) {
...
} finally {
IOUtils.closeQuietly(is, workbook);
}
}

error line 75

    is = new FileInputStream(url.getFile());

最佳答案

您必须通过 Class.getResourceAsStream() 访问资源,因为您无法访问打包在 jar 中的文件:

is = this.getClass().getResourceAsStream(templateFilePath)

如果它适用于 war ,那只是运气,因为您的 servlet/J2EE 容器似乎解压了您的 war ...并非所有容器都是如此(由于规范,它取决于容器是否是否会解开 war 的谜团)。意味着使用不同的容器,您也会在 war 中得到此异常。

关于java - Spring boot,无法读取文件,启动时使用jar包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44972358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com