Java - 运行jarfile使程序无响应

时间:2013-12-01 16:49:22

标签: java javafx

我创建了一个运行jarfile的JavaFX应用程序并获取它的(错误)输入流,然后用它重新绘制标签。为了做到这一点,(因为循环),我实现了Platform.runLater(Runnable); 。每当我运行jarfile时,程序立即停止响应。 (该程序是JFrame应用程序的翻版。它运行顺利,但我使用的是线程。)以下是导致问题的代码部分:

Platform.runLater(new Runnable(){
                @Override
                public void run(){
        try{
            data.updateConsole("Starting server!");
            //String fileDir = data.dir + File.separator + "craftbukkit.jar";
            Process proc = Runtime.getRuntime().exec("javaw -Xmx2048M -jar "+"craftbukkit.jar"+" -o true --nojline");
            data.setOutputStream(proc.getOutputStream());
            is = proc.getErrorStream();
        }catch(IOException ex){
            ex.printStackTrace();
        }
        BufferedReader readr = new BufferedReader(new InputStreamReader(is));
        data.setServerStarted(true);
        String line;
        try {
        while(data.serverStarted()){    
                if((line = readr.readLine()) != null){
                    data.updateConsole(line);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                readr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
                }});

任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

通过在平台线程上运行“java -jar”,您将阻止UI刷新。您应该创建一个单独的线程来运行“java -jar”逻辑,然后使用runLater来更新标签。