我今天已经下载了OpenJDK 8 sudo apt-get install openjdk-8-jdk,似乎JavaFX不包含在其中.
> java -version
openjdk version "1.8.0_66-internal"
OpenJDK Runtime Environment (build 1.8.0_66-internal-b17)
OpenJDK Server VM (build 25.66-b17, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我也在最新的Eclipse(Eclipse Mars)中安装了E(fx)clipse,但我仍然得到消息javafx无法解析.
我正在设置一个maven项目,即将使用JavaFX.由于我听说JavaFX没有附带所有版本的Java,我下载并将jfxrt.jar文件放在lib项目的目录中.
1)如何指定不应下载依赖项(即JavaFX),但是哪个位于lib?
2)这是否意味着项目可以在任何具有JDK的机器上构建(而不是必需的JDK 1.7 - 更新9+)?
我正在尝试在 Ubuntu 20.10 上安装 OpenJDK 8 和 OpenJFX 8。
在 Ubuntu 上安装 openJFX 8 一直有点棘手,但我曾经能够使用这个 SO 答案中的提示来做到这一点:https : //stackoverflow.com/a/56166582/2423283以前工作得很好(我认为我使用的是 Ubuntu 19.something),但最近似乎已8u161-b12-1ubuntu2被删除。
有关更多背景信息,我正在通过自动化管道中的 docker 文件安装它。以下是 Dockerfile 的相关部分:
FROM my.company.internal.registry:443/ubuntu:latest
RUN apt -y update && \
apt -y install \
openjdk-8-jdk \
openjfx=8u161-b12-1ubuntu2 \
libopenjfx-java=8u161-b12-1ubuntu2 \
libopenjfx-jni=8u161-b12-1ubuntu2
Run Code Online (Sandbox Code Playgroud)
这曾经运行得很好,但现在我得到:
E: Version '8u161-b12-1ubuntu2' for 'openjfx' was not found
E: Version '8u161-b12-1ubuntu2' for 'libopenjfx-java' was not found
E: Version '8u161-b12-1ubuntu2' for 'libopenjfx-jni' was not found
Run Code Online (Sandbox Code Playgroud)
我试着改变我ubuntu:latest要ubuntu:19:10在我 …
我切换到ubuntu 18.04.其中java 10默认为jvm
现在我使用javafx的应用程序无法再编译了.
cannot find symbol
[ERROR] symbol: class ObservableMap
Run Code Online (Sandbox Code Playgroud)
我尝试将参数添加到maven-compiler-plugin以加载javafx.graphics模块.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>--add-modules</arg>
<arg>javafx.graphics</arg>
</compilerArgs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
结果:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] module not found: javafx.graphics
Run Code Online (Sandbox Code Playgroud)
当然,java --list-modules | grep fx什么都不返回.
我花了10多个小时试图解决这个问题.
TL:DR我应该怎么做用Java 10编译我的JavaFX模块?
最小项目:
/pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<name>java10fx</name>
<artifactId>java10fx</artifactId>
<version>0.0.1</version>
<groupId>my.test</groupId>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<release>10</release>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
/src/main/java/MyApp.java
import javafx.application.Application;
import javafx.stage.Stage;
public class MyApp extends Application{
public static void main(String[] args) {
launch(args);
} …Run Code Online (Sandbox Code Playgroud)