Невозможно скомпилировать простейший пример scalafx

Я пробую 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
      })
    }
  }
}

Это все.


person Freewind    schedule 03.05.2014    source источник
comment
Какая версия Java / JavaFX? Из API кажется, что в Fx2.2 нет PopupWindow.AnchorLocation.   -  person ggovan    schedule 03.05.2014


Ответы (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, либо используйте другую версию.

person ggovan    schedule 03.05.2014

Я знаю, что этот вопрос немного устарел, но загрузка с:

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

работал у меня.

Обязательно измените настройки вашего проекта, чтобы использовать этот JDK.

person BAR    schedule 31.07.2015