javafx - HelloFX.java:1:错误:包 javafx.application.Application 不存在
问题描述
OS: Raspbian
CPU: RPi (armv7l)
JDK: Zulu11.31+16 (build 11.0.3+7)
JavaFX: self-built https://github.com/openjdk/jfx/archive/jdk-11+7.tar.gz
Problem:
$ export PATH_TO_FX=/usr/lib/jvm/javafx-sdk-armv6hf-11-0-7-b1/lib
$ ls $PATH_TO_FX
javafx.base.jar
javafx.controls.jar
javafx.fxml.jar
javafx.graphics.jar
javafx.media.jar
javafx-swt.jar
javafx.web.jar
<bunch of lib*.so>
$ jar -t --file $PATH_TO_FX/javafx.graphics.jar | grep Application
javafx.graphics/javafx/application/Application.class
$ export MODULES=javafx.controls,javafx.graphics
$ wget https://raw.githubusercontent.com/openjfx/samples/master/HelloFX/CLI/hellofx HelloFX.java
$ javac --module-path $PATH_TO_FX --add-modules $MODULES HelloFX.java
HelloFX.java:1: error: package javafx.application.Application does not exist
import javafx.application.Application
我检查并再次检查了 $PATH_TO_FX 和 $MODULES,它们似乎是正确的。如果我使用 -verbose 运行 javac,我会看到加载了 jdk 模块,但没有加载 jfx。
2020.12.19 更新:原来问题出在我构建的 JavaFX SDK 上。无论出于何种原因,Gradle 生成的模块 jar 都以模块名称作为根文件夹。一旦我剥离了模块名称并重新打包了 jar,SDK 就可以正常工作了。现在调查 Gradle 问题。
解决方案
推荐阅读
- python - 字典项之间的比较
- apache-spark - Spark SQL 返回所有空值,而直接 Hive 有效,通过 Spark 直接 Parquet 有效
- c++ - C++:未处理的异常:内存位置的 std::out_of_range
- django - 如何使用 Djoser 和 React Native 通过电子邮件激活帐户?
- python - Discord.py 中文本的相对位置
- jmeter - 在 Jmeter 中使用断言变量作为响应的问题
- c++ - 如何使用 std::filesystem::copy 在 C++ 中复制目录?
- javascript - 在全日历时间网格(V5.5)中显示具有正确时间(不是时隙)的事件?
- apache-kafka-connect - 当数据从 oracle 发送到 cassandra 时,我收到 YearOfEra 错误的 Invalid value
- java - 如何正确地将复杂的 Swift 对象序列化/反序列化为 AWS Lambda 有效负载?