Se buscan herramientas de diagnóstico de errores FXML / FXMLLoader

visión de conjunto

Hola, aquí hay uncontorno caso de uso Tengo un archivo FXML aparentemente válido desarrollado enJavaFX Scene Builder. Es ahora una porción no trivial de XML y hay errores de carga en tiempo de ejecución en algún lugar del archivo FXML. Scene Builder funciona bien con la opción Vista previa. Tengo un 'sencillo.fxml 'que uso para verificar que el controlador funciona según lo previsto, es decir, los mismos controles y eventos, pero sin los diseños FXML adicionales. Y tengo y estoy haciendo el código de corte y el bucle de prueba para identificar el XML con el problema. Así que llegaré al fondo de esto en algún momento.

En la actualidad no hay errores que se muestran en Scene Builder ni en el editor Netbeans FXML y no recibo un error con la carga como en "JavaFX - error al cargar el archivo FXML"(# 1). Todo lo que obtengo es una excepción en la tarea final en ejecutable, que dice que el cargador lanzó una excepción.

metas)

Estos errores suceden. La pregunta es qué herramientas están disponibles o en desarrollo paraSolucionar problemas de archivos FXML?

Algunos pensamientos, preguntas u opciones:

¿Es esto un error? Para importarle, algo como una caja negra como un cargador debería emitir algún tipo de indicador como falla en la línea 246 o "... Algo que indique dónde buscar.¿Qué trucos, técnicas o sugerencias tiene para encontrar / resolver tales errores más rápido?¿Hay algún lugar para usar Incluir?¿Qué ganchos hay en la clase FXMLLoader para atrapar o atrapar errores antes de que todo se caiga?¿Hay alguna posibilidad de registrar o diagnosticar el procesamiento de FXMLLoader?¿Alguien ha escrito un FXMLLoader personalizado que pueda usarse de esta manera? (ver # 3)Vi que FXML usa SAX, ¿es posible envolver o enganchar el analizador y darle al FXMLLoader un analizador alternativo?¿Existen herramientas estáticas para analizar la aplicación FXML y Java?Pelusa FXML ¿o algo?La información detallada sobre carga, análisis y tiempo de ejecución de FXML está disponible sobre cómo se procesa FXML.¿Hay o podrían agregarse o inyectarse algunos puntos de entrada adicionales en los controladores para capturar problemas de carga FXML?Por ejemplo, ¿se pueden conectar en cascada los controladores de manera que pueda hacer un 'controlador raíz' que pueda capturar problemas más cerca del punto de origen?

En la actualidad, los problemas dentro de FXML que solo se descubren en el momento de la carga son lentos e impredecibles si los editores no ven nada. Me gustaría ver algunas herramientas de diagnóstico si alguien h

Percepciones adicionales

Estos son algunos relevantes 'depuración'y'solución de problemas'consejos que aparecen durante el desarrollo. Quizás algunos de estos puedan encontrar su camino en un Validador FXML o una herramienta Lint algún día (?) Los puntos no están en un orden particular, están numerados para fines de referencia cruzada.

Cualquier identificador de controlador en FXMLdebe ser presente y anotado en el código Java con @FXML. Si falta una anotación, FXML no se cargará.Cada nombre de Java anotado con @FXML debe estar en el archivo de marcado FXML. Digamos una etiqueta llamada "myLabel": si myLabel se usa en el código, habrá una NullPointerException. El archivo se cargará, a diferencia del caso # 1.No utilice la opción de compilación "Compilar al guardar" de NetBeans con JavaFX. Parece generar NullPointerException-s espurias en código aparentemente correcto.Si renombra / refactoriza su aplicación principal, asegúrese de actualizar el objetivo de compilación (por ejemplo, maven o ant). Algunos códigos IDE refactor pueden perder ese enlace.

FXMLLoader () te da una pista. Si detecta la excepción, puede mirar el "getMessage ()" ...

catch( Exception ex ){
       System.out.println("Exception on FXMLLoader.load()");
       System.out.println( ex.getMessage() );   //-- Doesn't show in stack dump
}

Verifique su escritura en los recursos FXML. Los pequeños errores tipográficos son el demonio para identificar y detectar. Esto se aplica a cualquier cadena que no sea verificada por un compilador o pelusa, no solo FXML.

// These two line are not the same:
Parent root;
root = FXMLLoader.load(getClass().getResource("Samplle.fxml"));
root = FXMLLoader.load(getClass().getResource("Sample.fxml"));

Excepción.getMessage () es: "Lugar requerido", para ese error tipográfico en el n. ° 6.

Si edita el FXML manualmente, asegúrese de Todos los componentes relevantes.

Recuerde incluir el espacio de nombres FXML con archivos "-d", p. necesario en el elemento XML más externo.

<TreeView id="treeView" fx:id="tree" xmlns:fx="http://javafx.com/fxml" ... >

Espero que algo ayude. Estas son conjeturas basadas en pequeñas pruebas y ensayos. Por favor, corrija los supuestos integrados de malentendidos sobre cómo funcionan las cosasRealmente trabajo.

ver también:

JavaFX - error al cargar el archivo FXMLHerramienta de diagnóstico de Android para aplicaciones (caso de uso)Me gustaría anular FXMLLoader. ¿Cómo puedo hacer eso?¿Cómo carga FXMLLoader el controlador FXML?No se puede encontrar el error fxml para JavaFX (caso de uso)Clase javafx.fxml.FXMLLoaderArquitectura JavaFX (PDF disponible), desafortunadamente no hay nada aquí acerca de FXML.Introducción a FXMLCódigo fuente FXMLLoader.java

Respuestas a la pregunta(2)

Su respuesta a la pregunta