繁体   English   中英

Java 依赖无法找到自己的资源 - 在 AWS Lambda 中运行的代码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM