最简单的scalafx示例无法编译

时间:2014-05-03 16:50:58

标签: scala javafx scalafx

我用最简单的例子尝试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
      })
    }
  }
}

这就是全部。

2 个答案:

答案 0 :(得分:2)

这在Java 8 JVM上正常工作。可能的问题是您正在运行Java 7安装。

通过这些release notes ScalaFX有两个并行版本:

  • v.1.0.0 - 支持JavaFX 2和Java 7(SFX-1)
  • v.8.0.0 - 支持JavaFX 8和Java 8(SFX-8)

更新Java,或使用其他版本。

答案 1 :(得分:0)

我知道这个问题有点过时,但是从以下网址下载:

https://jdk8.java.net/download.html

为我工作。

确保更改项目设置以使用此JDK。