- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发一个需要能够在 3D 空间中查看/操作模型的应用程序,JavaFX 似乎是一个明显的候选者。如果有人可以提出更好的选择,那么我会很高兴听到它!
我正在使用在 MacOS Catalina 10.15.4 上运行的 IntelliJ CE 2019.3.3,以及 Java 14,据我所知这是最新版本。矛盾的是,鉴于 JavaFX 明显曲折的历史及其与主流 Java 的关系(感谢 Oracle),我担心使用最新的 JDK 可能是我所有问题的根源。
我下载了一个简单的应用程序,它向场景添加了一些简单的形状,我成功地运行了它。我通过向 pom.xml 添加两个依赖项来将 JavaFX 库添加到我的项目中:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>11</version>
</dependency>
请注意,我假设(可能是错误的)JavaFX 版本控制独立于 JDK 版本控制运行。
不幸的是,当我向这个程序添加一些稍微复杂的东西时,我收到以下错误:
/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home/bin/java --add-modules FXTest.base,FXTest.graphics --add-reads FXTest.base=ALL-UNNAMED --add-reads FXTest.graphics=ALL-UNNAMED -Dfile.encoding=UTF-8 -classpath /Users/Joe/Programming/myproj-mvn/target/classes:/Users/Andy/.m2/repository/org/junit/jupiter/junit-jupiter/5.4.2/junit-jupiter-5.4.2.jar:/Users/Andy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar:/Users/Andy/.m2/repository/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar:/Users/Andy/.m2/repository/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar:/Users/Andy/.m2/repository/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar:/Users/Andy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.4.2/junit-jupiter-params-5.4.2.jar:/Users/Andy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar:/Users/Andy/.m2/repository/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar:/Users/Andy/.m2/repository/org/apache/commons/commons-csv/1.8/commons-csv-1.8.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-controls/11/FXTest-controls-11.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-controls/11/FXTest-controls-11-mac.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-graphics/11/FXTest-graphics-11.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-graphics/11/FXTest-graphics-11-mac.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-base/11/FXTest-base-11.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-base/11/FXTest-base-11-mac.jar:/Users/Andy/.m2/repository/org/apache/logging/log4j/log4j-api/2.13.1/log4j-api-2.13.1.jar:/Users/Andy/.m2/repository/org/apache/logging/log4j/log4j-core/2.13.1/log4j-core-2.13.1.jar -p /Users/Andy/.m2/repository/org/openjfx/FXTest-base/11/FXTest-base-11-mac.jar:/Users/Andy/.m2/repository/org/openjfx/FXTest-graphics/11/FXTest-graphics-11-mac.jar net.foobar.myproj.FXTest
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at FXTest.graphics/com.sun.FXTest.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at FXTest.graphics/com.sun.FXTest.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.IllegalAccessError: class FXTest.scene.control.PopupControl (in unnamed module @0x5b464ce8) cannot access class com.sun.FXTest.application.PlatformImpl (in module FXTest.graphics) because module FXTest.graphics does not export com.sun.FXTest.application to unnamed module @0x5b464ce8
at FXTest.scene.control.PopupControl.<clinit>(PopupControl.java:90)
at net.foobar.myproj.FXTest.main(FXTest.java:24)
... 11 more
Exception running application net.foobar.myproj.FXTest
Process finished with exit code 1
通过手动将整个 JavaFX 库下载到新目录并将以下选项添加到我的运行时 VM 选项中,我能够克服这个问题:
--add-modules
javafx.controls
-p
/Users/Joe/Downloads/openjfx/javafx-sdk-11.0.2/lib
不幸的是,我发现当我将新类导入到我的应用程序中时,我遇到了此错误的变体,其方式我发现非常不可预测(并且很难修复)。我的灵感和耐心都快耗尽了,而且也没有足够的模块可以添加到 VM 选项列表中。
在两个不同的位置使用 JavaFX 库也感觉很俗气 - 我的 Downloads 目录和我的本地 .m2 Maven 存储库。
任何人都可以提出更好的解决方案来解决我的痛苦 - 替代的 3D 包或管理 JavaFX 库的更好方法吗?
<小时/>编辑我的问题以显示我所取得的进展(希望我能以其他方式添加更多详细信息)。
好吧,在舔了一会儿伤口后,我决定喝Maven酷爱饮料,一直喝到杯底。
我首先创建了一个Maven项目,基于javafx-archetype-simple 。我通过 Maven plugin for JavaFX 中的链接找到了这个地点。完成此操作后,我可以使用 mvncompile 编译代码,然后使用 mvn javafx:run 运行它。结果=成功!
我欣喜若狂,然后决定将项目导入 IntelliJ - 结果好坏参半。我必须修改“运行”配置,才能使用 mvn 插件(见上文),并且该部分似乎可以工作。
<小时/>更新 #2:我现在已将 IDE 的“运行配置”命令增强为 mvncompile javafx:run,这会强制代码在运行之前重新编译(如果需要重新编译 - maven)就这么聪明)。
祝我好运 - 我会继续更新这篇文章。
最佳答案
我在尝试使用 --add-modules
参数时遇到了类似的困难。
所以我创建了这个文件:
src/module-info.java
内容如下:
module MyProject{
requires javafx.controls;
}
您可以在这里找到完整的工作示例:https://carlfx.wordpress.com/2016/04/26/a-javafx-helloworld-using-java-9s-project-jigsaw-in-60-seconds/
关于Java 包 hell 尝试在 MacOS + IntelliJ 上使用 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60936500/
我不知道这是不是问这种问题的最佳地点, 我看到一些 JavaFX伙计们,重新标记 一些问题通过替换 javafx来自 javafx-2并采用新的 javafx-8 .它被弃用了还是什么? 编辑 : 不
错误本身: Error:java: invalid flag: --add-modules=javafx.fxml,javafx.graphics,javafx.controls,javafx.bas
这个想法是让一个应用程序在每个显示器上显示两个不同的窗口(阶段),该应用程序应该知道计算机有多少个显示器及其分辨率。 javafx有可能吗? 最佳答案 对于当前版本的 JavaFX (2.2),您可以
我正在将我的项目从 javafx 1.3 转换为 javafx 2.1。但我对 javafx.lang 有疑问包裹。 最佳答案 JavaFX 1.3 lang 包内容被拆分并移至下一个位置: 时长变为
当我尝试将标签添加到 gridpane 中时,如第二张图片所示,它不起作用。我已经尝试了很多东西,比如添加 CSS,但它仍然无法正常工作。为什么第 113 和 114 行不起作用? (opcje.se
我有一个JavaFX ContextMenu分配给滚动面板的鼠标右键单击。它会打开,但在滚动 Pane 外部单击时不会关闭。我可以在滚动 Pane 中添加另一个鼠标事件以将其隐藏,但这只能解决1个问题
我有一个tableview,其中附有一个可观察到的自定义类对象的列表(类类型:SalesInvoiceNetSale)。该表中的所有数据都可以正常显示。可观察列表中的最后一项是总计行(类类型:Sale
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我想知道如何在JavaFX中绘制半圆。我尝试使用Shape和QuadCurve,但无法制作出完美的半圆。 这是我要绘制的图片: 最佳答案 您链接的图片实际上是一个半圆环。您可以通过绘制嵌套的2条圆弧和
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在寻找 JavaFX 支持的图像类型(最新)列表,例如PNG、JPEG、TIFF。不同的搜索引擎没有帮助......知道从哪里开始吗? 更特别的是,我对 16 位灰度图像(不同格式)和罕见的受支持
我希望在 javafx 中让标签每 0.1 秒闪烁一次。文本显示在后台运行的 ImageView gif 的顶部。我将如何去做,或者您对最佳方法有什么建议? 谢谢 最佳答案 @fabian 的解决方案
我需要测试所选项目的值以调用不同的方法,因此我编写了添加侦听器的代码,但是该代码生成语法错误 @FXML private JFXComboBox cmbComp; cmbComp.valuePrope
我正在 Javafx 中编写一个非常简单的应用程序,其中舞台上有一个带有文本框的按钮作为一个场景。现在,我想要的行为是,当我单击按钮时,我可以使用另一个按钮加载另一个场景和舞台上的一个文本框,然后删除
编辑:如果用户单击“删除”以删除 ListView 中的项目,我会弹出一个警告框。它有效,但我希望它能超越原来的舞台。它出现在我的第一台显示器上。有什么方法可以设置警报显示时的位置吗? 请注意,“所有
我想使用 JavaFX 编写一个笔画绘图应用程序。我有一个压敏绘图板,如果能够读取笔的压力和倾斜值,那就太好了。 JavaFX 有一个 API 可以处理鼠标、触摸和滑动输入,但似乎没有任何东西可以产生
我在 JavaFX 中使用条形图和折线图。当我使两个图表大小相同并将它们放在同一位置时,它们完美地相互重叠。我如何使折线图显示在条形图的顶部。 目前我已将它们的不透明度设置为 0.7,这样它们“看起来
此问题与 this 相关。现在我想为字段值等于某个值的行着色。 @FXML private TableView tv_mm_view; @FXML private Ta
我有一个程序,可以生成高度图(0-255 的整数的 2D 数组),并使用 Shape3D“Box”对象为每个“像素”构建 3D View ,其高度与其在高度图中的值成比例。这会创建一个看起来很酷的四四
我想为 JavaFX 创建上下文菜单。这是我测试过的代码。但是由于某种原因,当我右键单击树节点时没有上下文菜单。你能帮我找出我的错误吗。 import java.util.Arrays; import
我是一名优秀的程序员,十分优秀!