【发布时间】:2018-08-20 11:26:59
【问题描述】:
将类路径资源读取为,
try {
final ClassPathResource classPathResource = new ClassPathResource(format("location%sGeoLite2-City.mmdb", File.separator));
final File database = classPathResource.getFile();
dbReader = new DatabaseReader.Builder(database).build();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
我已使用以下 Dockerfile 将其与 docker 打包,
FROM java:8
ADD build/libs/*.jar App.jar
CMD java -jar App.jar
但是在以 docker run -p 8080:8080 app-image 身份运行此应用程序时,我可以点击应用程序端点,并且从应用程序日志中我可以看到它无法读取此文件(以下是来自日志),
Exception: java.io.FileNotFoundException: class path resource [location/GeoLite2-City.mmdb] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/App.jar!/BOOT-INF/classes!/location/GeoLite2-City.mmdb
感谢任何评论,评论前须知,
**- 在 Windows 10、intellij 2018.2、jdk 8 上运行
- 可以使用 intellij 和命令行成功运行应用程序
- jar 中存在文件(我确实提取了 jar 并检查了)
**
【问题讨论】:
-
如果您能够在命令行上运行应用程序,我假设您的文件确实在 jar 中,所以它可能是“\\”标志?我也在 Windows 上用“/”阅读了我的类路径资源。
-
@thehandofNOD 确实,文件存在于 Jar 中,我修复了 \\,仍然无法工作。
标签: docker spring-boot java-8 windows-10 dockerfile