Error invoking method, failed to launch jvm

2019-01-09 07:31发布

问题:

I'm developing a desktop application using javafx v8.0.40. I have created an exe file with inno 5. When I run exe file in my computer, it is installed and run without any problem. On the other hand, when I try to install and run it on some other computer, at the end of installation, window dialog pops up: "Error invoking method", I click Ok. Another window pop up saying "Failed to launch jvm". I searched the whole internet, but I couldn't find much about this topic. I hope I will get solution to this problem. Thank you in advance.

回答1:

I ran into the same problem; the following worked for me and helped me make sense of those blasted "Error invoking method." and "Failed to launch JVM" dialogs:

  1. Find your .jar file
    • It has the same name as your Project and it's in your application's installation directory under AppData\Local\{ApplicationTitle}\app (shortcut: type %appdata% into explorer); if your project was named HelloWorld, there you will find HelloWorld.jar
  2. Navigate to it's directory in command prompt
    • shift+Right Click any blank spot in the Explorer window and choose "Open command window here" (that's a fancy trick I recently learned; alternatively you would cd to the same directory using the command prompt)
  3. Run your .jar via the command line
    • type java -jar "HelloWorld.jar" and hit Enter

Tadah! Behold your hidden exceptions (the existence of which "Error invoking method." so vaguely tries to communicate to you). *

If your problem is similar to mine it stems from a file structure difference between the project out folder and the installation directory, and that's why the program compiles just fine in the editor and builds just fine—there isn't a problem until it's built out, and the file structure is a little different.

*If you didn't get anything when you ran it via the command line, look for any errors that could be happening during that initialize() method; that's where your problem likely is. You can expose any exceptions during runtime by using a Popup Exception Dialog like shown in a similar problem, here.



回答2:

This is probably because it lacks the dependencies in the output jar. So you hate to add the libraries in the artifact and then .exe generation should be ok.

Here is an example with Intellij, where the libraries have be manually moved from "Available Elements" to the artifact

Intellij example



回答3:

even though this question is a little old - today I faced the exact same problem and couldn't find any solution searching for those error messages other then here.

The problem is pretty much identically: Built JavaFX Application (running fine on dev pc) using java 8 and packaged to native installer (exe) using Inno 5. Application ran fine on some of our machines - on others it failed with exact those to error messages:

  • "Error invoking method" and after clicking OK
  • "Failed to launch jvm".

On application startup, the fxml loader loads the first view controller and calls its "initialize" method. If - within initialize - an unhandeled exception is being thrown, the application crashes and those two windows error messages are shown.

Hope that this will help some one who like me is struggling with that, too.



回答4:

The response by J.Dürr (answered Jun 8 '16 at 9:58) helped solve my Error invoking method & Failed to launch JVM issue. I used the following code to track down the issue, which turned out to be an errant FXML resource path:

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


回答5:

I could not fix the problem, but I found a way around it. I used notepad to create a batch file to launch the app. First I used cd to get to the directory of the .jar file and then used java -jar to launch the app. It should look something like this:

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

Save it as a .bat file on the desktop, launch the batch file and your program will boot!