Java Desktop.open () никогда не завершается - PullRequest
0 голосов
/ 29 мая 2020

Вот пример кода, который никогда не завершит sh. Все, что я делаю, это открываю файл с помощью Desktop.open (file). Программа закрывается после того, как я закрываю открытый файл (например, всплывающий текстовый редактор или файл Excel).

public static void main(String[] args) {
    File file = new File("TextFile1.log");
    if (file.exists()) {
        Thread thread = new Thread() {
            @Override
            public void run() {
                Desktop desktop = Desktop.getDesktop();
                System.out.println("opening using desktop protocol " + desktop.toString());
                try {
//                  Runtime.getRuntime().exec("gedit "+file);//this line of code works fine, but it is linux related
                    desktop.browse(file.toURI());//
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
                System.out.println("File opened " + file.getName());
            }
        };
        thread.start();
    } else {
        System.out.println("File does not exists!");
    }
    try {
        Thread.sleep(1000L);//just so we do not exit before file is actually opened
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("End of program.");
    System.exit(0);
}

Результат, который я получаю:

opening using desktop protocol java.awt.Desktop@7a8afb69
File opened TextFile1.log
End of program.

Через некоторое время я решаю чтобы закрыть открытый файл, и я также получаю следующую строку в выводе:

Process finished with exit code 0

Как я могу открыть файл без блокировки выхода и эта кроссплатформенность поддерживается?

Я заметил это на Windows также. Все на Java 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...