javafx - Error al invocar el método, no se pudo iniciar jvm
javafx-8 (6)
Estoy desarrollando una aplicación de escritorio usando javafx v8.0.40. He creado un archivo exe con inno 5. Cuando ejecuto el archivo exe en mi computadora, se instala y ejecuta sin ningún problema. Por otro lado, cuando intento instalarlo y ejecutarlo en otra computadora, al final de la instalación, aparece el cuadro de diálogo de la ventana: "Error al invocar el método", hago clic en Aceptar. Aparece otra ventana que dice "Error al iniciar jvm". Busqué en todo Internet, pero no pude encontrar mucho sobre este tema. Espero obtener una solución a este problema. Gracias de antemano.
Acabo de tener este problema y la respuesta de @Brad Turek me señaló la dirección correcta. Excepto que no fue mi código el que arrojó la excepción.
El archivo .cfg (en
/<app_name>/app/<app_name>.cfg
) que el contenedor .exe utilizado para iniciar mi aplicación apuntaba incorrectamente a libs (archivos jar) que no existían en el directorio
/lib
.
Lo cual (concluí) causó que el cargador de clases lanzara y terminara el inicio.
Después de corregir el archivo .cfg, todo funcionó bien.
Esto probablemente se deba a que carece de las dependencias en el jar de salida. Por lo tanto, debe agregar las bibliotecas en el artefacto y luego la generación .exe debería estar bien.
Aquí hay un ejemplo con Intellij, donde las bibliotecas se han movido manualmente de "Elementos disponibles" al artefacto
La respuesta de J.Dürr (respondida el 8 de junio de 16 a las 9:58) ayudó a resolver mi método de invocación de error y no se pudo iniciar el problema de JVM . Usé el siguiente código para rastrear el problema, que resultó ser una ruta de recursos FXML errante:
public static void main(final String[] taArgs)
{
try
{
Main.launch(taArgs);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage());
try
{
PrintWriter pw = new PrintWriter(new File("<somefilename.txt>"));
e.printStackTrace(pw);
pw.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
No pude solucionar el problema, pero encontré una forma de evitarlo.
Usé el bloc de notas para crear un archivo por lotes para iniciar la aplicación.
Primero usé
cd
para llegar al directorio del archivo
.jar
y luego usé
java -jar
para iniciar la aplicación.
Debería verse más o menos así:
cd C:/[wherever your project folder is located]/[name of project]/dist
java -jar [name of project].jar
¡Guárdelo como un archivo
.bat
en el escritorio, inicie el archivo por lotes y su programa se iniciará!
Tuve el mismo problema; lo siguiente funcionó para mí y me ayudó a dar sentido a esos "método de invocación de errores". y cuadros de diálogo "Error al iniciar JVM":
-
Encuentra tu archivo
.jar
-
Tiene el mismo nombre que su Proyecto y está en el directorio de instalación de su aplicación en
AppData/Local/{ApplicationTitle}/app
( acceso directo: escriba% appdata% en el explorador ); si su proyecto se llamó HelloWorld, allí encontraráHelloWorld.jar
-
Tiene el mismo nombre que su Proyecto y está en el directorio de instalación de su aplicación en
-
Navegue a su directorio en el símbolo del sistema
-
shift
+
Haga clic derecho en
cualquier lugar en blanco en la ventana del Explorador y elija "Abrir ventana de comandos aquí"
(ese es un truco elegante que aprendí recientemente;
alternativamente, podría
cd
al mismo directorio usando el símbolo del sistema)
-
shift
+
Haga clic derecho en
cualquier lugar en blanco en la ventana del Explorador y elija "Abrir ventana de comandos aquí"
(ese es un truco elegante que aprendí recientemente;
alternativamente, podría
-
Ejecute su
.jar
través de la línea de comando-
escribe
java -jar "HelloWorld.jar"
y presiona Enter
-
escribe
Tadah! Observe sus excepciones ocultas (la existencia de la cual "Error al invocar el método" intenta tan vagamente comunicarse con usted). * *
Si su problema es similar al
mine
se debe a una diferencia en la estructura de archivos entre la carpeta de
out
del proyecto y el directorio de instalación, y es por eso que el programa se compila bien en el editor y se construye bien, no hay ningún problema hasta que se construya , y la estructura del archivo es un poco diferente.
* Si no obtuvo nada cuando lo ejecutó a través de la línea de comando, busque cualquier error que pueda estar ocurriendo durante ese método
initialize()
;
ahí es donde probablemente esté tu problema.
Puede exponer cualquier excepción durante el tiempo de ejecución mediante el uso de un cuadro de diálogo de excepción emergente como se muestra en
mine
.
a pesar de que esta pregunta es un poco vieja, hoy me enfrenté exactamente al mismo problema y no pude encontrar ninguna solución buscando esos mensajes de error que no sean aquí.
El problema es casi idéntico: la aplicación JavaFX desarrollada (que funciona bien en la PC de desarrollo) usando Java 8 y empaquetada en el instalador nativo (exe) usando Inno 5. La aplicación funcionó bien en algunas de nuestras máquinas; en otras, falló con errores exactos mensajes:
- "Error al invocar el método" y después de hacer clic en Aceptar
- "Error al iniciar jvm".
Al iniciar la aplicación, el cargador fxml carga el primer controlador de vista y llama a su método de "inicialización". Si, dentro de initialize, se produce una excepción sin supervisión, la aplicación se bloquea y se muestran esos dos mensajes de error de Windows.
Espero que esto ayude a alguien que como yo también está luchando con eso.