如何在 Ubuntu 18.04 上安装和运行 java 8 和 javafx

mat*_*usf 6 java javafx 18.04

我想在 ubuntu 18.04 上安装 java 8 和 javafx。

我安装openjdk-8-jdkopenjfxopenjdk-8-jre通过apt但由于世界你好应用程序的编译失败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 {
...
Run Code Online (Sandbox Code Playgroud)

我试图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

Run Code Online (Sandbox Code Playgroud)

此外,似乎我有 2 个版本,java但我仅通过上面的命令安装了它。

$ ls /usr/lib/jvm/
java-1.8.0-openjdk-amd64  java-8-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

小智 8

Ubuntu 18.04 上的默认 openjfx 包与 OpenJDK 8 不兼容。您可以使用旧版本的 openjfx 包。请注意,这不是一个完全安全的解决方案,因为您不会获得软件包的更新。

sudo apt install \
  openjfx=8u161-b12-1ubuntu2 \
  libopenjfx-java=8u161-b12-1ubuntu2 \
  libopenjfx-jni=8u161-b12-1ubuntu2
Run Code Online (Sandbox Code Playgroud)

拿着包裹:

sudo apt-mark hold \
  openjfx \
  libopenjfx-java \
  libopenjfx-jni
Run Code Online (Sandbox Code Playgroud)


小智 0

由于某种原因,JavaFX 在带有标准包的 Ubuntu 中不再工作。该错误已在Launchpad 上报告。