Javafx 我能';t使用带有自定义组件的SceneBuilder打开fxml[已解决]

Javafx 我能';t使用带有自定义组件的SceneBuilder打开fxml[已解决],javafx,fxml,scenebuilder,Javafx,Fxml,Scenebuilder,当我打开FXML文件时,我有一个类未找到异常。 我已经导入了我的类 我的FXML文件: <?xml version="1.0" encoding="UTF-8"?> <?import org.m2l.application.MultiSelectTableView?> <?import javafx.scene.control.TableView?> <?import javafx.scene.control.

当我打开FXML文件时,我有一个类未找到异常。 我已经导入了我的类

我的FXML文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import org.m2l.application.MultiSelectTableView?>

<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TableColumn?>

<fx:root type="javafx.scene.layout.VBox" xmlns:fx="http://javafx.com/fxml"> 
    <MultiSelectTableView fx:id="tbvPublic" prefHeight="200.0" prefWidth="591.0" tableMenuButtonVisible="true" >

        <columns>
         <TableColumn fx:id="columnIdPublic" prefWidth="86.0" text="IDPublic" />
        <TableColumn fx:id="columnLibellePublic" prefWidth="484.0" text="LibelléPublic" />
        </columns>
    </MultiSelectTableView>
    
</fx:root>
这是我的控制器,似乎正确:

package org.m2l.controllers;
...
导入org.m2l.application.MultiSelectTableView;
导入org.m2l.modeles.Public;
...
公共类TBVPublicController扩展VBox实现可初始化{
@FXML
私有多选表视图TBVPPublic;
@FXML
private TableColumn columnIdPublic;
@FXML
私人专栏诽谤公众;
@FXML
私有文本字段文本字段;
公共TBVPublicController(){
试一试{
FXMLLoader=newFXMLLoader(getClass().getResource(“/org/m2L/vues/TbvPublic.fxml”);
setClassLoader(getClass().getClassLoader());
setRoot(this);
loader.setController(此);
loader.load();
}捕获(IOE异常){
抛出新的运行时异常(e);
}
}
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
System.out.println(“URL位置:”+位置);
System.out.println(“ResourceBundle resources:+resources”);
ObservableList lesPublics=FXCollections.observableArrayList();
lesPublics.setAll(新公众(1,“Bénévole”)、新公众(2,“Ensignant”);
columnIdPublic.setCellValueFactory(新属性值工厂(“IdPublic”));
columnLibellePublic.setCellValueFactory(新的PropertyValueFactory(“LibellePublic”));
tbvPublic.setItems(lePublics);
}
}
可能是,我以前必须在Scenebuilder中添加一个jar,但没有教程。。。 谢谢你的帮助

[Edit],我的解决方案:

在Eclipse中: 在MultiSelectTableView.java文件的上下文菜单上,选择导出、Jar文件、下一步

Jar内文件规范 check.classpath,check.project,检查导出生成的类文件和资源,检查导出java源文件和资源

在选项中: 压缩jar文件的内容 添加目录项

下一步:罐内包装选项 取消选中带有编译错误的导出类文件

取消选中带有编译警告的导出类文件

(并取消选中在工作区中保存此JAR的描述)

接下来,在Jar清单规范中 选中仅生成清单文件(不在工作区中保存清单) 检查密封一些包裹,没有密封

让我们在textfield主类中留空

单击finish,就这样

在fxml文件中,注释引发异常的犯罪导入(在我的案例中:

<!-- <?import org.m2l.application.MultiSelectTableView?> -->)
现在,在Scenebuilder中,转到jar/FXML导入(单击搜索文本字段附近的图标),然后选择您的jar文件 关闭Scenebuilder。 在fxml scenebuilder中,取消对导入的注释

现在,scenebuilder不会抛出类Not Found异常,现在一切正常。

这是一个老问题,但可能会有帮助: