私はopenjfxを実行するのに苦労しており、絶望的です。 LinuxとJavaで問題を解決できると思いましたが、これほど長い間停滞したことはありませんでした。
Linuxと同様に、多くの命令がありますが、すべて矛盾して複雑です。 Stackexchangeネットワークの複数のサイトから受信するすべてのエラーメッセージには、スコアの低い質問がたくさん含まれています。各質問には単純で不完全で、私の質問とあいまいに関連する矛盾したスコアの低い答えがたくさんありました。そうすれば、質問の半分は実際には答えられていませんが、「答え」を受け取ったので閉じます。 openjdk 11でopenjfx 11を使用しようとしていますが、1つのエラーを解決すると、別のエラーしか発生しません。
Stack Exchangeには具体的な質問が必要なので、私の質問は次のとおりです。以下に dpkg-query -L openjfx の出力を示します。これを行うべきですか?
xubuntu 18.04.3 LTSを別々に新しくインストールし、従いました。このステップしかし幸運はありません。次に、次のことを試してください。これ。私が理解できない内容でいっぱいですが、関係のないGoogle検索結果を提供します。
走ろうとしています。このコード。実行中の構成の--module-path /usr/lib/jvm/java-8-openjdk-amd64/lib/ --add-modules javafx.controls
仮想マシンパラメータにこのエントリがあります。どこから持ってきたのか覚えていません。私は現在これを得ます:
Unrecognized option: --module-path
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
これは、人々がトラブルシューティングに使用する傾向があるdpkg出力です。
$ dpkg-query -L openjfx
/.
/usr
/usr/bin
/usr/lib
/usr/lib/jvm
/usr/lib/jvm/java-8-openjdk-amd64
/usr/lib/jvm/java-8-openjdk-amd64/bin
/usr/lib/jvm/java-8-openjdk-amd64/bin/javafxpackager
/usr/lib/jvm/java-8-openjdk-amd64/bin/javapackager
/usr/lib/jvm/java-8-openjdk-amd64/jre
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext
/usr/lib/jvm/java-8-openjdk-amd64/lib
/usr/lib/jvm/java-8-openjdk-amd64/man
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8/man1
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8/man1/javafxpackager.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8/man1/javapackager.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/man/man1
/usr/lib/jvm/java-8-openjdk-amd64/man/man1/javafxpackager.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/man/man1/javapackager.1.gz
/usr/share
/usr/share/doc
/usr/share/doc/openjfx
/usr/share/doc/openjfx/TODO.Debian
/usr/share/doc/openjfx/changelog.Debian.gz
/usr/share/doc/openjfx/copyright
/usr/share/man
/usr/share/man/man1
/usr/bin/javafxpackager
/usr/bin/javapackager
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/javafx.properties
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfxswt.jar
/usr/lib/jvm/java-8-openjdk-amd64/lib/ant-javafx.jar
/usr/lib/jvm/java-8-openjdk-amd64/lib/javafx-mx.jar
/usr/share/man/man1/javafxpackager.1.gz
/usr/share/man/man1/javapackager.1.gz
上に追加してはいけませんか?このように?私はopenjfx 8以上であるかどうかにかかわらず、javafx.controlsなどの項目をリストする必要があると思います。
これは、人々が私のような質問を入力する傾向がある別のコマンドです。
$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
答え1
私もdpkg-query -L openjfx
できることを願っています。パッケージに含まれるファイルのリストただ。
しかし、私はあなたの質問に答えたくないので、問題を解決するのに役立ちます。 Java 9で導入されたモジュールの概念をJava 8と混在させたいと思います。 Ubuntu 18.04で利用可能なJava 11を使用することをお勧めします。 javafx-sdkを手動でダウンロードしてください。
私のシステムで実行される例として、次のスクリプトを考えてみましょう。
#!/bin/bash
wget --no-clobber -O javafx-sdk.zip https://gluonhq.com/download/javafx-11-0-2-sdk-linux/
unzip -n javafx-sdk.zip
mkdir -p helloworld
cat > helloworld/HelloWorld.java <<EOF
package helloworld;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
EOF
/usr/lib/jvm/java-11-openjdk-amd64/bin/javac --module-path javafx-sdk-*/lib --add-modules javafx.controls helloworld/HelloWorld.java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java --module-path javafx-sdk-*/lib --add-modules javafx.controls helloworld.HelloWorld
しかし、「そんなに長い間、「すべてが開いている」と主張したのは間違いだった」というあなたの意見は理解できません。