java—使用docker时访问src/main/resources中的文件

xyhw6mcr  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(280)

我正在学习如何使用docker和java,所以我非常愿意接受建议。
我的项目自上而下地运作没有问题;但是现在我正在尝试进行本地docker部署,我在访问文件夹位置时遇到了问题。
我在本地管理一切;桌面是windows。
我要做的是获取ffmpeg.exe并在运行时将exe文件移到jar旁边。
我猜docker有一种不同的方法可以做到这一点;但我不知道该怎么做,也不想寻求帮助。
整个方法如下:

static public String ExportResource(String resourceName) throws Exception {
        InputStream stream = null;
        OutputStream resStreamOut = null;
        String jarFolder;
        stream = VideoTranscode.class.getResourceAsStream(resourceName);//note that each / is a directory down in the "jar tree" been the jar the root of the tree
        if (stream == null) {
            throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
        }

        int readBytes;
        byte[] buffer = new byte[4096];

        jarFolder = new File(VideoTranscode.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath().replace('\\', '/');
        if (!resourceFileAlreadyCopied(resourceName)) {
            try {

                resStreamOut = new FileOutputStream(jarFolder + resourceName);
                while ((readBytes = stream.read(buffer)) > 0) {
                    resStreamOut.write(buffer, 0, readBytes);
                }
            } catch (Exception ex) {
                throw ex;
            } finally {
                stream.close();
                resStreamOut.close();
            }
        }

        return jarFolder + resourceName;

    }

我在这里得到npe: jarFolder = new File(VideoTranscode.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath().replace('\\', '/');
这是我的docker文件

FROM maven:3-openjdk-8
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题