嗨,这是一个大纲用例。我有一个在 JavaFX Scene Builder 中开发的看似有效的FXML文件。它现在是一个非常重要的XML块,并且在FXML文件中的某处存在运行时加载错误。使用“预览”选项,Scene Builder可以正常工作。我有一个' 简单 .fxml'我用来验证控制器是否按预期工作,即相同的控件和事件,但没有额外的FXML布局。我已经和我正在进行剪切代码和测试循环以识别带有问题的XML。所以我会在某个时候深究这一点。
目前在Scene Builder和Netbeans FXML编辑器中都没有显示错误,并且我没有像#34; JavaFX - loading FXML file error"中那样出现错误;(#1 )。我得到的只是runnable中的最终任务的一个例外,它说加载器抛出异常。
发生这些错误。问题是 对FXML文件进行故障排除 可用或正在开发哪些工具?
一些想法,问题或选择:
目前,只有在编辑人员看不到任何内容时,FXML中仅在加载时才会发现的问题非常耗时且难以预测。如果有人,我想看一些诊断工具
这些是一些相关的' 调试'和' 疑难解答'在开发过程中出现的提示。也许其中一些可能会在某一天进入FXML验证器或Lint工具(?)这些点没有特定的顺序,它们的编号用于交叉引用。
FXMLLoader()确实给你一个线索。如果您发现异常,可以查看" getMessage()" ...
catch( Exception ex ){
System.out.println("Exception on FXMLLoader.load()");
System.out.println( ex.getMessage() ); //-- Doesn't show in stack dump
}
检查您在FXML资源上的输入。小错字是识别和检测的恶魔。这适用于任何未被编译器或lint检查的字符串,而不仅仅是FXML。
// These two line are not the same:
Parent root;
root = FXMLLoader.load(getClass().getResource("Samplle.fxml"));
root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
exception.getMessage()是:" 需要的位置",针对#6中的错字。
请记住将FXML名称空间包含在" -d"文件,例如在最外面的XML元素上需要。
<TreeView id="treeView" fx:id="tree" xmlns:fx="http://javafx.com/fxml" ... >
希望有所帮助。这些都是基于小型测试和试验的猜测。请修复关于实际工作方式的误解的嵌入式假设。
另见 :
答案 0 :(得分:2)
使用SceneBuilder 2.0和JavaFX2时遇到了同样的问题。问题是SceneBuilder生成JavaFX8代码。代码有效但不兼容100%JavaFX2。也许这可能是你的问题。你应该从FXMLLoader得到一个异常,错误在哪一行。
答案 1 :(得分:0)
Scenic View是一个JavaFX应用程序,旨在使其简单易用 了解应用场景图的当前状态,以及 也可以轻松地操纵场景图的属性而不必 继续编辑你的代码。这可以让你找到错误,并获得像素 完美而无需编译 - 检查 - 编译舞蹈。
本演示文稿中有一个很好的推荐和描述:
<强>更新强> Scenic View的工作方式类似于JavaFX应用程序的调试器或监视器。它无法解决FXML加载程序问题,因为它会调查或监视正在运行的场景。另外,我发现最新版本v1.3.0在Windows 7和64位Java 8上不稳定。