scala 2.12 特征中丢失的注释信息
annotation information lost in scala 2.12 trait
刚刚更新了一个scala 2.11 + JavaFX项目到2.12.0-RC1,代码中大量使用了java @FXML
注解,例如
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 中所有 traits 都被编译为接口,但这种变化是如何导致问题的?有什么解决方法吗?
虽然原因不明,但在scala-2.12.0-RC2中已经解决了这个问题。谢谢 Scala 团队。
刚刚更新了一个scala 2.11 + JavaFX项目到2.12.0-RC1,代码中大量使用了java @FXML
注解,例如
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 中所有 traits 都被编译为接口,但这种变化是如何导致问题的?有什么解决方法吗?
虽然原因不明,但在scala-2.12.0-RC2中已经解决了这个问题。谢谢 Scala 团队。