我正在学习如何使用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"]
暂无答案!
目前还没有任何答案,快来回答吧!