SBT 导入空的基于 JavaFX 的 jar

Posted

技术标签:

【中文标题】SBT 导入空的基于 JavaFX 的 jar【英文标题】:SBT imports empty JavaFX-base jar 【发布时间】:2018-12-13 04:56:08 【问题描述】:

我已切换到 OpenJDK 11,但由于某种原因它不包含 JavaFX,所以我现在必须将其用作依赖项。但是,SBT 会导入一个空 jar。

只是好奇它为什么会发生以及如何解决?

【问题讨论】:

您可能需要包含依赖项的特定于平台的分类器(即,win 用于 Windows,linux 用于 Linux,等等...)。不幸的是,我不知道如何使用 SBT 做到这一点。 Gradle 也有类似的问题,尽管 Maven 会自动处理这个问题。使用这些分类器的原因是某些 JavaFX 模块包含特定于平台的本机代码。 看来你是对的。 Maven 中心包含不同的版本:central.maven.org/maven2/org/openjfx/javafx-base/12-ea+4。太奇怪了……谢谢。 当你意识到他们为什么这样做时,这并不奇怪。请参阅this answer 和this mailing list 了解更多信息。 【参考方案1】:

为了获得正确的 jar,您需要添加 OS 分类器。例如:"org.openjfx" % "javafx-base" % "12-ea+4" classifier "linux"。或者你也可以按照例子:https://www.reddit.com/r/scala/comments/9fbzbk/build_file_snippet_for_using_javafx_with_java_11/

【讨论】:

以上是关于SBT 导入空的基于 JavaFX 的 jar的主要内容,如果未能解决你的问题,请参考以下文章

如何从scala对象中的sbt ProjectPlugin.scala加载对象

导入 javafx 无法解析

JavaFX 纹理导入的 3D 对象

JavaFX: MaterialFx导入使用

ProGuard 破坏 JavaFX 应用程序

与基于摇摆的图表相比,为啥基于 javafx 的图表占用更多内存