web-dev-qa-db-ja.com

Java 8とUbuntu 18.04のjavafxをインストールして実行する方法

Java 8とjavafxをubuntu 18.04にインストールします。

インストール済みopenjdk-8-jdkopenjfxおよびopenjdk-8-jre via aptを使用しますが、javacjavafxを見つけられないため、hello worldアプリのコンパイルが失敗します。

$ 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を見つけようとしました here がシステムにありません。

$ 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

また、Javaの2つのバージョンがあるようですが、上記のコマンドによってのみインストールしました。

$ ls /usr/lib/jvm/
Java-1.8.0-openjdk-AMD64  Java-8-openjdk-AMD64
4
matusf

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
7
Ehsan

標準パッケージのUbuntuでは、なんらかの理由でJavaFXが機能しなくなりました。バグは ここ がLaunchpadで報告されています。

0
user955826