23

NetBeans8.0経由でOracle JDK 1.8.0_05を使用して、Ubuntu 12.04 LTS 64ビット(Gnome Shellを使用)でJavaでいくつかのコードを実行しています。

次の関数は、メインまたは空の Java プロジェクトで呼び出された場合は完全に機能しますが、任意の JavaFX アプリケーションから呼び出された場合は、ウィンドウがフリーズして応答を停止し (プロジェクトは完全に準拠していますが)、強制的に閉じる必要があります。

問題またはループを引き起こしている可能性のある、私が書いたものに関する問題を誰かが提案できますか?

残念ながら、障害のモードにより、私が提供または分析できるエラー メッセージはありません。

喜んで受け取った提案は、事前に感謝します。

   public static void desktopTest(){

            Desktop de = Desktop.getDesktop();

            try {
                de.browse(new URI("http://stackoverflow.com"));
            }
            catch (IOException | URISyntaxException e) {
                System.out.println(e);
            }

            try {
                de.open(new File("/home/aaa/file.ext"));
            }
            catch (IOException e){
                System.out.println(e);
            }
            try {
                de.mail(new URI("mailto:email@example.com"));
            }
            catch (URISyntaxException | IOException e){
                System.out.println(e);
            }
}
4

5 に答える 5

40

私も同じ問題を抱えていましたが、この解決策は私にとってはうまくいきます:

if( Desktop.isDesktopSupported() )
{
    new Thread(() -> {
           try {
               Desktop.getDesktop().browse( new URI( "http://..." ) );
           } catch (IOException | URISyntaxException e1) {
               e1.printStackTrace();
           }
       }).start();
}
于 2015-12-23T05:16:22.110 に答える
3

問題を解決しました...

 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();
        }
    }

}
于 2015-06-11T20:02:28.280 に答える