JavaFX Freeze on Desktop.open(file), Desktop.browse(uri)
I resolved problem with...
public static void abrirArquivo(File arquivo) { if (arquivo != null) { if (arquivo.exists()) { OpenFile openFile = new OpenFile(arquivo); Thread threadOpenFile = new Thread(openFile); threadOpenFile.start(); } }}private static class OpenFile implements Runnable { private File arquivo; public OpenFile(File arquivo) { this.arquivo = arquivo; } private void abrirArquivo(File arquivo) throws IOException { if (arquivo != null) { java.awt.Desktop.getDesktop().open(arquivo); } } @Override public void run() { // TODO Auto-generated method stub try { abrirArquivo(arquivo); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
I also have this same problem. I found out that if I call the Desktop.open() method from a new thread, the file will open after I close the JavaFX application window, but that doesn't help much.
If you put
SwingUtilities.invokeLater(() -> System.out.println("Hello world"));
in to your main method after your launch(args) call, it also won't get called until after you close the JavaFX application.
It seems like there's some kind of concurrency issue between the JavaFX application and Swing.
On Ubuntu you can try
xdg-open filename
from your JavaFX app.
As far as I can tell, your code should work.