web-dev-qa-db-fra.com

Erreur lors de l'appel de la méthode, échec du lancement de jvm

Je développe une application de bureau utilisant javafx v8.0.40. J'ai créé un fichier exe avec inno 5. Lorsque je lance le fichier exe sur mon ordinateur, il est installé et fonctionne sans problème. D'autre part, lorsque j'essaie de l'installer et de l'exécuter sur un autre ordinateur, à la fin de l'installation, une boîte de dialogue apparaît: "Erreur lors de l'appel de la méthode", je clique sur OK. Une autre fenêtre apparaît disant "Impossible de lancer jvm". J'ai fait des recherches sur Internet, mais je n'ai pas trouvé grand chose à ce sujet. J'espère que j'aurai une solution à ce problème. Merci d'avance.

11
tarlan

J'ai rencontré le même problème; Ce qui suit a fonctionné pour moi et m'a aidé à comprendre le sens de la méthode "Erreur d'invocation" et "Échec du lancement de la machine virtuelle Java":

  1. Trouvez votre fichier .jar
    • Il porte le même nom que votre projet et se trouve dans le répertoire d'installation de votre application sous AppData\Local\{ApplicationTitle}\app (): raccourci: tapez% appdata% dans l'explorateur ); si votre projet s'appelle HelloWorld, vous y trouverez HelloWorld.jar
  2. Accédez à son répertoire dans la commande Invite
    • shift+Right Click n'importe quel espace dans la fenêtre de l'explorateur et choisissez "Ouvrir la fenêtre de commande ici" (c'est un truc sophistiqué que j'ai récemment appris; sinon, vous devriez cdname __ dans le même répertoire à l'aide de la commande Invite )
  3. Exécutez votre .jar via la ligne de commande
    • tapez Java -jar "HelloWorld.jar" et appuyez sur Enter

Tadah! Voici vos exceptions cachées (l'existence de laquelle "Erreur invoquant la méthode." Tente donc vaguement de vous communiquer). *

Si votre problème est similaire à le mien il provient d'une différence dans la structure de fichier entre le dossier outdu projet et le répertoire d'installation. C'est pourquoi le programme se compile parfaitement dans l'éditeur et se construit parfaitement. t un problème jusqu’à ce qu’il soit construit, et la structure de fichier est un peu différente.

* Si vous n'avez rien obtenu lorsque vous l'avez exécuté via la ligne de commande, recherchez les erreurs pouvant survenir au cours de cette méthode initialize(); c'est là que se situe probablement votre problème. Vous pouvez exposer toutes les exceptions pendant l'exécution à l'aide d'un dialogue d'exception contextuelle, comme indiqué dans problème similaire, ici .

11
Brad Turek

C'est probablement parce qu'il manque les dépendances dans le fichier jar de sortie. Donc, vous détestez ajouter les bibliothèques dans l'artefact et la génération .exe devrait être ok.

Voici un exemple avec Intellij, où les bibliothèques ont été manuellement déplacées de "Eléments disponibles" vers l'artefact

Exemple Intellij

4
Rumoch

Je ne pouvais pas résoudre le problème, mais j'ai trouvé un moyen de le contourner. J'ai utilisé le bloc-notes pour créer un fichier de commandes pour lancer l'application. J'ai d'abord utilisé cd pour accéder au répertoire du fichier .jar, puis Java -jar pour lancer l'application. Ça devrait ressembler a quelque chose comme ca:

cd C:\[wherever your project folder is located]\[name of project]\dist
Java -jar [name of project].jar

Enregistrez-le en tant que fichier .bat sur le bureau, lancez le fichier de commandes et votre programme démarrera!

0
Bold Warrior

même si cette question est un peu ancienne - aujourd'hui, je rencontrais exactement le même problème et je ne trouvais aucune solution pour rechercher ces messages d'erreur autres qu'ici. 

Le problème est à peu près identique: Application JavaFX construite (fonctionnant bien sur dev pc) utilisant Java 8 et intégrée dans un programme d’installation natif (exe) utilisant Inno 5. L’application a fonctionné correctement sur certaines de nos machines. - sur d’autres, il échouait avec exactement les messages d’erreur suivants:

  • "Erreur lors de l'appel de la méthode" Et après avoir cliqué sur OK
  • "Échec du lancement de jvm". 

Au démarrage de l'application, le chargeur fxml charge le premier contrôleur de vue et appelle sa méthode "initialize". Si - au cours de l'initialisation - une exception non gérée est générée, l'application se bloque et ces deux messages d'erreur Windows sont affichés.

J'espère que cela aidera quelqu'un qui, comme moi, se débat avec cela aussi. 

0
J.Dürr

La réponse de J.Dürr (réponse du 8 juin 2016 à 9h58) a permis de résoudre ma Erreur invoquant la méthode & Échec de lancement de JVM issue. J'ai utilisé le code suivant pour localiser le problème, qui s'est révélé être un chemin de ressource FXML erroné:

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();
    }
  }
}
0
Eddie Fann