为什么openjdk8在使用docker时没有拉入正确的javafx库?

cngwdvgl  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(489)

我有一个我写的java程序。主要包括openjdk8、maven和javafx。程序自行构建和运行。我想把它放在一个码头集装箱里,但我很难把它造出来。
这是我的文件:

FROM openjdk:8-jdk
FROM maven:3.3-jdk-8-onbuild
RUN apt-get update && apt-get install -y --no-install-recommends openjfx && rm -rf /var/lib/apt/lists/*
CMD ["java","-jar","target/"CodeDemo-1.0-SNAPSHOT.jar"]

以下是我用来构建容器的内容:

sudo docker build -t java-maven-code-demo .

以下是我一直抱怨没有javafxpackager的错误:
未能执行目标org.codehaus。mojo:exec-maven-plugin:1.2.1:项目codedemo上的exec(解包依赖项):命令执行失败。无法运行程序“/usr/lib/jvm/java-8-openjdk-amd64/jre/./bin/javafxpacker”(在目录“/usr/src/app”中):错误=2,没有这样的文件或目录->[help 1]
我在codedemo目录下有所有的文件。在顶层,我有src、target、dockerfile、pom.xml。在target中,我已经编译了jar。
我对这个错误感到困惑,因为我认为Java8OpenJDK是javafx附带的。因此,如果我拉openjdk,我应该得到javafx所需的东西(github上的类似问题-解决方案仍然给出了错误)。
有人能指出我可能做错的方向吗?我还需要做些什么才能找到合适的图书馆吗?

xjreopfe

xjreopfe1#

你有多个 FROM 线。基于dockerfile,将只使用maven基本映像。也许可以尝试通过另一个安装openjdk RUN 安装openjfx之前的语句?
我也没看到 COPY 在dockerfile中的语句。我最初以为 CodeDemo-1.0-SNAPSHOT.jar 默认情况下存在于maven映像上,但我只是尝试构建映像,但它不存在。如果这是java程序中的jar文件,不要忘记通过 COPY 在dockerfile中的语句。

相关问题