1

刚刚将一个 scala 2.11 + JavaFX 项目更新到 2.12.0-RC1,代码@FXML大量使用 java 注释,例如

trait MainController {
  @FXML def onRun(event: ActionEvent) {
    val script = currentEngine.executeScript("editor.getValue()").toString
    runScript(script)
  }
}

<MenuItem mnemonicParsing="false" onAction="#onRun" text="Run">
   <accelerator>
        <KeyCodeCombination alt="UP" code="R" control="UP" meta="UP" shift="UP" shortcut="DOWN"/>
   </accelerator>
</MenuItem>

在运行时,它在执行时抛出错误FXMLLoader.load

javafx.fxml.LoadException: Error resolving onAction='#onRun', either the event handler is not in the Namespace or there is an error in the script.

似乎@FXML在编译过程中注释信息已经丢失。听说在 2.12 中所有的 Trait 都编译成接口,但是这个变化是怎么引起问题的呢?有什么解决方法吗?

4

1 回答 1

0

虽然原因仍然未知,但这个问题已在 scala-2.12.0-RC2 中解决。谢谢你,Scala 团队。

于 2016-10-15T10:38:37.693 回答