Java 8とjavafxをubuntu 18.04にインストールします。
インストール済みopenjdk-8-jdk
、openjfx
およびopenjdk-8-jre
via apt
を使用しますが、javac
がjavafx
を見つけられないため、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
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
標準パッケージのUbuntuでは、なんらかの理由でJavaFXが機能しなくなりました。バグは ここ がLaunchpadで報告されています。