Я бы хотел установить java 8 и javafx на ubuntu 18.04.
Я установил 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
JavaFX по какой-то причине больше не работает в Ubuntu со стандартными пакетами. Об ошибке сообщается здесь на Launchpad.
Значение по умолчанию openjfx пакет на Ubuntu 18.04 не совместимо с 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
Этот ответ помог мне:
https://stackoverflow.com/a/60354037/4288043
Удалить любой jdk или jfx, который пришел из репозитория ubuntu (или debian), а затем вместо этого загрузить полный jdk из:
https://bell-sw.com/pages/downloads/
... который включает в себя jfx