2

我正在用一个最简单的例子尝试scalafx,但它无法编译,错误如下:

错误:scalac:在类文件“StageIncludes.class”中遇到对 javafx.stage.PopupWindow.AnchorLocation 的错误符号引用。无法访问对象 javafx.stage.PopupWindow 中的类型 AnchorLocation。当前类路径可能缺少 javafx.stage.PopupWindow.AnchorLocation 的定义,或者 StageIncludes.class 可能已针对与当前类路径中找到的版本不兼容的版本进行编译。

我用谷歌搜索,发现有人说我们需要添加jfxrt.jar到类路径,但这仍然不起作用。

我的代码:

构建.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

应用程序.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
      })
    }
  }
}

就这样。

4

2 回答 2

2

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

根据这些发行说明,ScalaFX 有两个并行版本:

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

要么更新 Java,要么使用其他版本。

于 2014-05-03T19:27:32.910 回答
0

我知道这个问题有点过时,但从以下位置下载:

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

为我工作。

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

于 2015-07-31T16:43:04.960 回答