我有以下问题。我使用javafx和unirest编写了一个Java应用程序来进行Internet访问。当我在自己的ide(intellij)中运行该应用程序时,一切正常。但是,当我生成一个exe时,什么也没有发生。我做了一些调查,发现了这个问题(Error invoking method, failed to launch jvm)。当我完全停用unirest代码时,该应用会启动,但是当然没有功能。然后,这是我第一次创建可运行的Java代码版本和整体代码。我使用来自unirest库的单个调用:
HttpResponse<JsonNode> jsonResponse
= Unirest.get("website")
.header("key", "value")
.asJson();
就像我说的那样,一切正常,在思想上没有一个错误。可能Windows阻止exe的Internet连接,并导致异常。我将防病毒软件和防火墙中的文件列入了白名单,但这并没有帮助。我不知道如何从这一点开始。如果有人可以帮助我,那会很好。
关于Slaw的评论。当您很快想重现该问题时,请创建一个新的javafx项目,将一个按钮和一个textArea添加到fxml文件,添加unirest lib,然后将以下代码添加到“ Controller.java”:
@FXML
Button button;
@FXML
TextArea text;
public void initialize(){
button.setOnAction((event -> {
try {
HttpResponse<String> jsonResponse
= Unirest.get("https://api.fortnitetracker.com/v1/profile/pc/bob")
.asString();
text.setText(jsonResponse.getBody().toString());
} catch (UnirestException e) {
e.printStackTrace();
}
}));
}
在ide中运行该应用程序,它会毫无问题地启动,当您单击按钮“ {” message“:”未在请求中找到API密钥“}”时,将按预期方式打印在textArea中。当您构建一个可运行的版本然后尝试启动它时,如果什么都没有发生,或者两个两个弹出窗口显示“错误调用方法”和“无法启动JVM”。
答案 0 :(得分:0)
我找到了解决问题的方法,这完全是我的错。因为我是新手,所以我按照YouTube上的2个教程创建了可执行文件。看来我必须将unirest lib单独添加到“ JavaFXApp”工件中。 可以通过以下方式找到它:文件->项目结构->项目设置->工件->选择工件->在“输出布局”下,按“ +”按钮并添加您在项目中使用的所有库,就像您已经添加一样他们到项目本身。
尽管如此,感谢您对Slaw的快速回答。