#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.