在场景构建器中打开自定义控件时,UnsupportedClassVersionError

问题描述 投票:0回答:2

我的自定义类:

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 intellij-idea javafx scenebuilder
2个回答
0
投票

您已经使用Java 9的目标级别编译了您的类(因此生成了53的类版本),但您尝试使用Java 8运行它。

使用Java 9运行它,或者使用目标语言级别8构建它。


0
投票

我没有找到内置的Scene Builder的修复程序,但是我在外部Scene Builder上找到了一个解决方法,使用以下步骤:

  • 安装Gluon Scene Builder。
  • 将NumberField移动到它自己的包中。
  • 制作仅包含NumberField的自定义fxml。
  • 将JavaFX Application添加到包中。
  • 将包定义为工件。
  • 构建工件。
  • 在Gluon Scene Builder中添加自定义JAR。
© www.soinside.com 2019 - 2024. All rights reserved.