gpt4 book ai didi

java - 为什么 OpenJDK 8 在使用 Docker 时没有提取正确的 JavaFX 库?

转载 作者:行者123 更新时间:2023-12-02 10:18:30 26 4
gpt4 key购买 nike

我有一个我写的java程序。主要有OpenJDK8、Maven、JavaFX。该程序自行构建并运行。我想将其放入 Docker 容器中,但构建它时遇到问题。

这是我的 Dockerfile:

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 的错误:

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (unpack-dependencies) on project CodeDemo: Command execution failed. Cannot run program "/usr/lib/jvm/java-8-openjdk-amd64/jre/../bin/javafxpackager" (in directory "/usr/src/app"): error=2, No such file or directory -> [Help 1]

我将所有文件都放在 CodeDemo 目录中。在顶层,我有 src、target、Dockerfile、pom.xml。在目标中,我有编译好的jar。

我对这个错误感到困惑,因为我认为 Java 8 OpenJDK 是随 JavaFX 一起提供的。所以,如果我拉 OpenJDK,我应该得到 JavaFX 所需的东西(similar question on GitHub - 但解决方案仍然给出错误)。

任何人都可以指出我可能做错的方向吗?我还应该做些什么来获得正确的库吗?

最佳答案

您有多个 FROM 行。根据您的 Dockerfile,仅使用 Maven 基础镜像。也许在安装 openjfx 之前尝试通过另一个 RUN 语句安装 openjdk?

我在您的 Dockerfile 中也没有看到任何 COPY 语句。我最初假设 CodeDemo-1.0-SNAPSHOT.jar 默认情况下存在于 Maven 镜像上,但我只是尝试构建镜像,但它不存在。如果这是 Java 程序中的 jar 文件,请不要忘记通过 Dockerfile 中的 COPY 语句添加它。

关于java - 为什么 OpenJDK 8 在使用 Docker 时没有提取正确的 JavaFX 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54509862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com