我想尝试在sbt中创建一个简单的JavaFX应用程序,但似乎sbt无法找到任何javafx
包,给我一些错误,如
error: package javafx.application does not exist
error: package javafx.fxml does not exist
error: package javafx.scene does not exist
......等等
我发现奇怪的是,javafx
包默认包含在Java 7+中,所以如果有的话,包应该对编译器可用,但看起来并不是这样。
任何帮助?
ps:我没有使用任何javafx
相关的插件,只是纯粹的sbt,我正在尝试编译Java项目,而不是Scala项目。该项目设置为使用sbteclipse
答案 0 :(得分:7)
如何针对JavaFX(在SBT或任何其他工具中)构建内容取决于您的JDK版本:
这一切都是开箱即用的:JavaFX位于jre/lib/ext
,这意味着它位于java
和javac
的默认类路径上,并且它应该在以下时自动可用编译和运行。这就是@JacekLaskowski在他的回答中的配置。
这仅适用于仅目标Java 8:JavaFX 8不适用于Java 7,因此针对它进行编译会使您的应用程序仅限Java8(除非您确保仅使用可用的内容) JavaFX 2.x,目标jdk7字节码,与您的应用程序打包JavaFX 2.x等。)
JavaFX SDK是分布式与JDK一起使用,但它不能自动使用:它在任何类路径上不,你必须在{ {1}}并自行将其添加到类路径中。这就是某些IDE在获得JavaFX支持时自动执行的操作。
SBT不会自动为您执行此操作。 sbt-javafx有一点帮助,但您仍然需要配置罐子的位置等。
您必须下载独立版本并将其添加到类路径中。上面的jdk7u6 +案例的其余部分适用。
最后,请注意在Java 8的生命周期中将新功能添加到JavaFX中,因此构建应用程序可能需要特定版本的JDK8(这在JDK7中也有一点发生),这也是您的原因之一应该用您的应用程序打包JavaFX。
基本上,只要依赖JavaFX,就必须将JDK和/或JavaFX本身作为两个非托管依赖项进行跟踪,各个开发人员必须检查版本并进行配置。
答案 1 :(得分:0)
这很奇怪,因为我是JavaFX的新手并且之前从未使用它,但它对我来说就像一个魅力 - 至少我可以导入javafx.application
包。
scala> import javafx.application
import javafx.application
您需要提供有关您的环境的更多信息。我的下面。
> about
[info] This is sbt 0.13.5
[info] The current project is {file:/Users/jacek/sandbox/sbt-learning-space/}sbt-learning-space 1.0.0
[info] The current project is built against Scala 2.10.4
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, com.typesafe.sbteclipse.plugin.EclipsePlugin, net.virtualvoid.sbt.graph.Plugin, com.timushev.sbt.updates.UpdatesPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.4
> console
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_20).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import javafx.application
import javafx.application