【问题标题】:A simplest scalafx example can't be compiled一个最简单的scalafx示例无法编译
【发布时间】:2014-06-20 06:23:49
【问题描述】:

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

错误:scalac:在类文件“StageIncludes.class”中遇到对 javafx.stage.PopupWindow.AnchorLocation 的错误符号引用。 无法访问对象 javafx.stage.PopupWindow 中的类型 AnchorLocation。当前的类路径可能是 缺少 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
      })
    }
  }
}

就是这样。

【问题讨论】:

  • 什么版本的 Java/JavaFX?从 API 看,Fx2.2 中似乎没有 PopupWindow.AnchorLocation。

标签: scala javafx scalafx


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我知道这个问题有点过时了,但下载自:

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

    为我工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2017-08-05
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多