Как я могу запустить программу JavaFX, используя Bazel? - PullRequest
0 голосов
/ 25 апреля 2020

В настоящее время у меня есть очень тривиальный JavaFX "Hello, World!" приложение, которое я пытаюсь построить и запустить с Bazel. Я использую правило maven_install() для установки зависимостей JavaFX в мои WORKSPACE файлы, например, так:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

RULES_JVM_EXTERNAL_TAG = "3.2"
RULES_JVM_EXTERNAL_SHA = "82262ff4223c5fda6fb7ff8bd63db8131b51b413d26eb49e3131037e79e324af"

http_archive(
    name = "rules_jvm_external",
    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
    sha256 = RULES_JVM_EXTERNAL_SHA,
    url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)

load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
    artifacts = [
        "org.openjfx:javafx-controls:mac:11.0.1",
        "org.openjfx:javafx-graphics:mac:11.0.1",
        "org.openjfx:javafx-base:mac:11.0.1",
    ],
    repositories = [
        "https://repo1.maven.org/maven2",
    ],
)

И затем я пытаюсь создать java_binary в файле BUILD следующим образом:

java_binary(
    name = "app",
    srcs = glob(["src/**/*.java"]),
    main_class = "com.dylanpowers.Main",
    deps = [
        "@maven//:org_openjfx_javafx_controls_mac",
        "@maven//:org_openjfx_javafx_graphics_mac",
        "@maven//:org_openjfx_javafx_base_mac"
    ]
)

В этом случае Main.java на самом деле является единственным файлом в моем приложении, так как я пытаюсь просто запустить программу. Сборка работает нормально с bazel build :app, но когда я пытаюсь запустить ее с bazel run :app, я получаю следующую ошибку:

Error: JavaFX runtime components are missing, and are required to run this application

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 26 апреля 2020

https://github.com/deepinthink-pumpkin/pumpkin-chat-jfx/blob/master/main/BUILD.bazel#L21

Создайте еще один основной класс в качестве входа в приложение javafx.

...