запуск ссылки из JAR: «Firefox не может найти сервер в www.%u.com .»

#java #firefox #hyperlink

#java #firefox #гиперссылка

Вопрос:

Я пытаюсь запустить ссылку с Java. То, как я это делаю, — это вызвать firefox, Internet Explorer или Safari следующим образом:

 public class LinkLauncher implements Runnable  {
    static String Link;
    public void launchLink(String link){
        Link = " "" link """;
        Runnable runnable = new LinkLauncher();
        Thread thread = new Thread(runnable);
        thread.start();
    }
    public void run() {
         if (Desktop.isDesktopSupported()) {
            Desktop desktop;
            desktop = Desktop.getDesktop();
            URI uri = null;
            try {
                uri = new URI(Link);
                 desktop.browse(uri);
            } catch (IOException ioe) {
            } catch (URISyntaxException use) {
            }
        } else {
            Shell Shell = new Shell();
            String Cmd[]={"firefox", Link};
            String LaunchRes=Shell.sendShellCommand(Cmd);
            if (LaunchRes.contains("CritERROR!!!")){
                String MCmd[]={"open" , Link};
                String MLaunchRes=Shell.sendShellCommand(MCmd);
                if (MLaunchRes.contains("CritERROR!!!")){
                    String WCmd[]={"explorer", Link};
                    Shell.sendShellCommand(WCmd);
                }
            }
        }
    }

}
 

Этот метод отлично работает с NetBeans, но как только я создаю файл java jar, он перестает работать.

Когда я перехожу с netbeans на jar, в нем не пропадает ни одной библиотеки. Он просто отображает %U как ссылку в Firefox или других браузерах.

Есть какой-нибудь способ, которым я могу это исправить?

Полный код доступен по адресу http://hummingbird-hibl.googlecode.com/svn/trunk /

Комментарии:

1. Это не по теме, но почему Link статично? Собираетесь ли вы поделиться объектом Link с другим экземпляром LinkLauncher ?

2. Я думаю, вы можете сделать launchLink метод статическим, чтобы вы могли создавать ссылку без создания объекта LinkLauncher . В противном случае вам придется создать два объекта LinkLauncher только для того, чтобы создать ссылку.

3. Как что-либо, начинающееся с, может (space)" быть допустимым URI? Почему этот код игнорирует исключения? Для более быстрой помощи отправьте сообщение SSCCE .

4. В нем есть свободное место, потому что я устранял неполадки. То же самое относится и к статике.

5. Эндрю Томпсон, код доступен по адресу hummingbird-hibl.googlecode.com/svn/trunk под интерфейсом GalaxyS

Ответ №1:

Рабочий стол не поддерживался, но Java утверждала, что это так. Я пересмотрел код следующим образом, поэтому последнее, что он пытается, — это запустить «поддерживаемый» браузер.

     public class LinkLauncher implements Runnable  {
    static String Link;
    public void launchLink(String link){
        Link = link;
        Runnable runnable = new LinkLauncher();
        Thread thread = new Thread(runnable);
        thread.start();
    }
    public void run() {

        Shell Shell = new Shell();
        String Cmd[]={"firefox", Link};
        String LaunchRes=Shell.sendShellCommand(Cmd);
        if (LaunchRes.contains("CritERROR!!!")){
            String MCmd[]={"open" , Link};
            String MLaunchRes=Shell.sendShellCommand(MCmd);
            if (MLaunchRes.contains("CritERROR!!!")){
                String WCmd[]={"explorer", Link};
                String WLaunchRes=Shell.sendShellCommand(WCmd);
                if (WLaunchRes.contains("CritERROR!!!")){
                     if (Desktop.isDesktopSupported()) {
                        Desktop desktop;
                        desktop = Desktop.getDesktop();
                        URI uri = null;
                        try {
                            uri = new URI(Link);
                             desktop.browse(uri);
                        } catch (IOException ioe) {
                        } catch (URISyntaxException use) {
                        }
                     }
                }
            }
        }
    }
}
 

Комментарии:

1. Shell Класс недоступен в NetBeans 7.3.