2

我很新JavaFX,我在使用我的自定义类时遇到问题FXML。尝试加载时控制台不断给我这个异常main.fxml

... 1 more
Caused by: java.lang.ClassNotFoundException: sample.View$BoardPane
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
...

我将BoardPane类创建为FlowPanein package的子类,sample.View并在我的 FXML 中将其引用如下:

<?import sample.View.BoardPane?>
...
<TitledPane expanded="true" collapsible="false" text="BoardPane" fx:id="centerTitledPane">
    <BoardPane fx:id="mechoBoardPane"/>
</TitledPane>
...

项目结构如下所示:

  • 资源
    • 文件格式
      • 主文件
  • ...
  • 源代码
    • ...
    • 样本
      • ...
      • 看法
        • 板窗格

谁能帮我解决这个问题?我一直在寻找一段时间,并没有找到任何解释。

4

1 回答 1

3

包名“View”必须小写。在您的项目中,以及在 fxml.xml 中。

有关详细信息,请参阅 FXMLLoader.class 的方法 loadType:

private Class<?> loadType(String name, boolean cache) throws ClassNotFoundException {
    int i = name.indexOf('.');
    int n = name.length();
    while (i != -1
        && i < n
        && Character.isLowerCase(name.charAt(i + 1))) {  // <<<<<<<<<
        i = name.indexOf('.', i + 1);
    }

    if (i == -1 || i == n) {
        throw new ClassNotFoundException();
    }

    String packageName = name.substring(0, i);
    String className = name.substring(i + 1);

    Class<?> type = loadTypeForPackage(packageName, className);

    if (cache) {
        classes.put(className, type);
    }

    return type;
}
于 2015-06-17T04:36:20.467 回答