刚刚将一个 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 都编译成接口,但是这个变化是怎么引起问题的呢?有什么解决方法吗?