![如何在 Ubuntu 18.04 上安装并运行 Java 8 和 Javafx](https://linux22.com/image/1165453/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%2018.04%20%E4%B8%8A%E5%AE%89%E8%A3%85%E5%B9%B6%E8%BF%90%E8%A1%8C%20Java%208%20%E5%92%8C%20Javafx.png)
我想在 ubuntu 18.04 上安装 java 8 和 javafx。
我安装了openjdk-8-jdk
,openjfx
并openjdk-8-jre
通过apt
,但是 hello world 应用程序的编译失败,因为javac
无法找到javafx
。
$ sudo apt install openjdk-8-jdk openjfx openjdk-8-jre
$ javac -version
javac 1.8.0_191
$ cat App.java
import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
public class App extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new Pane();
Scene scene = new Scene(pane, 300, 250);
primaryStage.setTitle("Hello, World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
$ javac App.java
App.java:1: error: package javafx.application does not exist
import javafx.application.*;
^
App.java:2: error: package javafx.stage does not exist
import javafx.stage.*;
^
App.java:3: error: package javafx.scene does not exist
import javafx.scene.*;
^
App.java:4: error: package javafx.scene.layout does not exist
import javafx.scene.layout.*;
^
App.java:6: error: cannot find symbol
public class App extends Application {
...
javafx
我尝试找到这里但它不在我的系统中。
$ ls /usr/lib/jvm/java-8-openjdk-amd64/bin/
appletviewer java java-rmi.cgi jhat jrunscript keytool rmic servertool xjc
extcheck javac jcmd jinfo jsadebugd native2ascii rmid tnameserv
idlj javadoc jconsole jjs jstack orbd rmiregistry unpack200
jar javah jdb jmap jstat pack200 schemagen wsgen
jarsigner javap jdeps jps jstatd policytool serialver wsimport
另外似乎我有 2 个版本,java
但我仅通过上述命令安装了它。
$ ls /usr/lib/jvm/
java-1.8.0-openjdk-amd64 java-8-openjdk-amd64
答案1
Ubuntu 18.04 上的默认 openjfx 包与 OpenJDK 8 不兼容。您可以使用旧版本的 openjfx 包。请注意,这不是一个完全安全的解决方案,因为您将无法获得该包的更新。
sudo apt install \
openjfx=8u161-b12-1ubuntu2 \
libopenjfx-java=8u161-b12-1ubuntu2 \
libopenjfx-jni=8u161-b12-1ubuntu2
拿着包裹:
sudo apt-mark hold \
openjfx \
libopenjfx-java \
libopenjfx-jni
答案2
由于某种原因,JavaFX 在 Ubuntu 中不再使用标准包。已报告此错误这里在 Launchpad 上。
答案3
这个答案对我有帮助:
https://stackoverflow.com/a/60354037/4288043
卸载来自 ubuntu(或 debian)repo 的任何 jdk 或 jfx,然后从以下位置下载完整的 jdk:
https://bell-sw.com/pages/downloads/
...其中包括 jfx