Я пробую scalafx на простейшем примере, но он не может быть скомпилирован, и ошибка выглядит примерно так:
Ошибка: scalac: неверная символьная ссылка на javafx.stage.PopupWindow.AnchorLocation обнаружена в файле класса StageIncludes.class. Невозможно получить доступ к типу AnchorLocation в объекте javafx.stage.PopupWindow. В текущем пути к классам может отсутствовать определение для javafx.stage.PopupWindow.AnchorLocation, или StageIncludes.class мог быть скомпилирован с версией, несовместимой с версией, найденной в текущем пути к классам.
Я погуглил и обнаружил, что кто-то говорит, что нам нужно добавить 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
})
}
}
}
Это все.