2015-01-10 4 views
0

Я работаю над приложением, в котором, если пользователь нажимает на ссылку, я хочу, чтобы она открывалась в браузере по умолчанию. Из того, что я читал, это должно теоретически работать, однако, когда вы запускаете Linux (в частности, Linux Mint 17.1), он зависает, пока программа не перестанет работать. Мне неинтересно, что он открыт в WebView. Любые альтернативы или исправления, о которых вы все можете думать? Заранее спасибо.Desktop.getDesktop(). Просмотреть Hangs

if(Desktop.isDesktopSupported()){ 
    try{ 
     Desktop.getDesktop().browse(new URI(url)); 
    }catch (IOException | URISyntaxException e){ 
     log.debug(e); 
    } 
} 
+0

Что такое типичное значение для 'url'? Это 'http: // ..' или 'файл: // ..' или что-то еще? –

+0

http: // является наиболее распространенным – erzr2

+0

'Desktop.browse (..)', как известно, терпит неудачу для URI на основе 'file:'. Вместо этого используйте ** Desktop.open (Файл) '**. Это также терпит неудачу для ** 'http:' ** URI? –

ответ

0

You are not alone. Это ошибка, которая появляется в некоторых версиях JDK 1.6 и 1.7. Я не видел этого в JDK 1.8.

Это может произойти и в Windows, и все, что вы можете сделать, это либо обновить JVM, либо не использовать класс Desktop (который отстой).

+0

Великолепный. Ну, написал немного работы. Хорошо работает для меня. – erzr2

0

Что вы получите от этого ?:

if (Desktop.isDesktopSupported()) { 
    System.out.println("Desktop IS supported on this platform "); 

    if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { 
    System.out.println("Action BROWSE IS supported on this platform "); 
    } 
    else { 
    System.out.println("Action BROWSE ISN'T supported on this platform "); 
    } 
} 
else { 
    System.out.println("Desktop ISN'T supported on this platform "); 
} 

Кроме того, посмотрите на this и this ответы здесь, на StackOverflow.