可运行的Javafx应用程序中的Unirest

时间:2019-03-04 20:30:45

标签: java javafx jar javafx-8 unirest

我有以下问题。我使用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”。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法,这完全是我的错。因为我是新手,所以我按照YouTube上的2个教程创建了可执行文件。看来我必须将unirest lib单独添加到“ JavaFXApp”工件中。 可以通过以下方式找到它:文件->项目结构->项目设置->工件->选择工件->在“输出布局”下,按“ +”按钮并添加您在项目中使用的所有库,就像您已经添加一样他们到项目本身。

尽管如此,感谢您对Slaw的快速回答。