dpkg-query -L openjfx 的输出应该是什么?

dpkg-query -L openjfx 的输出应该是什么?

我正在努力运行 openjfx 并且变得绝望。我以为我可以在linux和java中进行故障排除,但我从来没有被困这么长时间。

与 Linux 一样,有很多指导,但都是相互冲突且复杂的。我在 stackexchange 网络的多个站点上得到的每条错误消息都包含大量低分问题。每个问题都有一些相互矛盾和低分的答案,这些答案都很简短、不完整并且与我的问题模糊相关。然后,一半的问题将被关闭,因为它们“已得到解答”,而实际上尚未得到解答。我尝试使用 openjdk 11 来使用 openjfx 11,但解决一个错误只允许我得到另一个错误。

堆栈交换需要具体问题,所以这是我的问题:下面,我展示了 dpkg-query -L openjfx 的输出。这是应该的吗?

我单独全新安装了 xubuntu 18.04.3 LTS 并遵循这些步骤但没有运气。然后我尝试以下。它充满了我不明白的东西,但给了我不相关的谷歌结果。

我正在尝试跑步这段代码。在我的运行配置中,我--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

上面的不是应该更多吗像这样?我想我应该看到像 javafx.controls 这样的东西列出,无论它是 openjfx 8 还是更新版本。

这是人们在像我这样的问题中倾向于输入的另一个命令

$ 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 混合在一起。我建议坚持使用 Java 11,它在 Ubuntu 18.04 中可用。手动下载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

不过,我不明白你关于“这么长时间坚持“一切都开放”是一个错误”的评论。

相关内容