我用最简单的例子尝试scalafx,但它无法编译,错误就像:
错误:scalac:对类文件' StageIncludes.class'中遇到的javafx.stage.PopupWindow.AnchorLocation的错误符号引用。 无法访问对象javafx.stage.PopupWindow中的类型AnchorLocation。当前的类路径可能是 缺少javafx.stage.PopupWindow.AnchorLocation或StageIncludes.class的定义可能是针对某个版本进行编译的 与当前类路径中找到的不兼容。
我用Google搜索并发现有人说我们需要将jfxrt.jar
添加到类路径中,但仍然无效。
我的代码:
build.sbt
name := "ColaBlog"
version := "0.1.0"
scalaVersion := "2.11.0"
libraryDependencies ++= List(
"org.scalafx" % "scalafx_2.11" % "8.0.0-R4"
)
unmanagedJars in Compile += Attributed.blank(
file(scala.util.Properties.javaHome) / "lib" / "jfxrt.jar")
fork in run := true
App.scala
import scalafx.Includes._
import scalafx.application.JFXApp
import scalafx.scene.Scene
import scalafx.scene.paint.Color
import scalafx.scene.shape.Rectangle
object App extends JFXApp {
stage = new JFXApp.PrimaryStage {
title = "Hello World"
width = 600
height = 450
scene = new Scene {
fill = Color.LIGHTGREEN
content = Set(new Rectangle {
x = 25
y = 40
width = 100
height = 100
fill <== when(hover) choose Color.GREEN otherwise Color.RED
})
}
}
}
这就是全部。
答案 0 :(得分:2)
这在Java 8 JVM上正常工作。可能的问题是您正在运行Java 7安装。
通过这些release notes ScalaFX有两个并行版本:
更新Java,或使用其他版本。
答案 1 :(得分:0)