[英]Java dependency unable to find its own resources - code running in AWS Lambda
我的 lambda 代码使用一个依赖项,它使用ClassOfDependency.class.getResourceAsStream("/filename.jks")
加载自己的资源。 当我创建一个消耗这种依赖关系的简单 main 时,这很好用,但是当我将此代码部署到 lambda 时,它会抛出一个错误,指出它找不到“/filename.txt”。 我在这里错过了什么吗? “filename.jsk”在 src/resources/ 中,这里的资源在 IntelliJ 中被标记为资源目录。
谢谢
这是我的方法 - 以下方法接受fileName
并返回File
。
private File getSampleSourceFile(String fileName) {
try {
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource(fileName);
if(url == null) {
logger.log("unable to find " + fileName + " in the resource");
return null;
}
File txtFile = File.createTempFile("sample_" + System.currentTimeMillis(), ".txt");
FileUtils.copyInputStreamToFile(url.openStream(), txtFile);
return txtFile;
} catch (Exception e) {
logger.log("failed to load file: " + e.toString());
return null;
}
}
至于文件位置,我的res
文件夹在src
文件夹之外。 我不确定您使用什么 IDE 来构建 Jar 工件,但我使用的是 IntelliJ IDEA。 这是我的模块的屏幕截图,显示了 jar 包文件夹层次结构。
笔记:
如果你想要InputStream
而不是File
,你可以只返回url.openStream()
而不是将InputStream
转换为File
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.