我的自定义类:
public class IntegerField extends TextField {
public IntegerField() {
super();
restrictToNumbersOnly();
}
public IntegerField(String text) {
super(text);
restrictToNumbersOnly();
}
public void restrictToNumbersOnly() {
// Irrelevant
}
}
然后我尝试像这样添加这个自定义类:
<IntegerField fx:id="example" />
IntelliJ的Scene Builder输出此错误:
java.lang.UnsupportedClassVersionError: path/IntegerField has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
我已经尝试搜索此错误,但没有找到任何解释为什么这不应该工作。我发现的示例表明,应该可以从控件类中扩展,并将其直接导入到fxml文件中,并且可以。它在运行程序时非常有效,它是场景构建器的问题。
我意识到这是一个Java版本问题,但是整个项目都设置为Java 9(53)并且我已经尝试更改版本无济于事。
您已经使用Java 9的目标级别编译了您的类(因此生成了53的类版本),但您尝试使用Java 8运行它。
使用Java 9运行它,或者使用目标语言级别8构建它。
我没有找到内置的Scene Builder的修复程序,但是我在外部Scene Builder上找到了一个解决方法,使用以下步骤: