首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FXML: ClassNotFoundException

FXML: ClassNotFoundException
EN

Stack Overflow用户
提问于 2015-06-17 03:29:01
回答 1查看 1.6K关注 0票数 2

我对JavaFX非常陌生,在FXML中使用我的自定义类有问题。当试图加载main.fxml时,控制台一直给我这个异常:

代码语言:javascript
复制
... 1 more
Caused by: java.lang.ClassNotFoundException: sample.View$BoardPane
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
...

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

代码语言:javascript
复制
<?import sample.View.BoardPane?>
...
<TitledPane expanded="true" collapsible="false" text="BoardPane" fx:id="centerTitledPane">
    <BoardPane fx:id="mechoBoardPane"/>
</TitledPane>
...

项目结构是这样的:

  • 资源
    • fxml
      • main.fxml

  • ..。
  • 钢筋混凝土
    • ..。
    • 样本
      • ..。
      • 视图
        • BoardPane

有人能帮我吗?我已经找了一段时间了,还没有找到任何解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-17 04:36:20

包名"View“必须是小写。在项目中,以及在fxml中。

有关更多细节,请参见方法loadType of FXMLLoader.class:

代码语言:javascript
复制
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;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30881845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档