我使用Eclipse
开发Java桌面应用程序。 Desktop
类有一个名为browse()
的有用方法,它在系统的默认浏览器中打开一个URI。我的问题是此功能在Eclipse
中不再有效,但在Eclipse
之外仍可正常工作,例如在启动包含代码的可执行Jar
文件时。
这是一个简短的可编辑示例:
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class OpenExample
{
public static void main(String[] arguments) throws URISyntaxException, IOException
{
Desktop.getDesktop().browse(new URI("https://www.google.com/"));
}
}
我收到以下例外:
Exception in thread "main" java.io.IOException: Failed to open https://www.google.com/. Error message: A device attached to the system is not functioning.
at sun.awt.windows.WDesktopPeer.ShellExecute(Unknown Source)
at sun.awt.windows.WDesktopPeer.browse(Unknown Source)
at java.awt.Desktop.browse(Unknown Source)
at OpenExample.main(OpenExample.java:10)
可能是什么问题?显然,Java
代码是正确的,因为它之前有效,所以必须在Eclipse
或甚至Windows
中删除某些内容。
答案 0 :(得分:0)
这可能与此JDK错误相关:https://bugs.openjdk.java.net/browse/JDK-8064934
即。可能会发生真正的错误,但由于此错误,JDK报告错误的错误代码。
答案 1 :(得分:-1)
import java.awt.Desktop;
import java.net.URI;
public class OpenExample {
public static void main(String[] args) throws Exception {
String url = "http://google.com";
if (Desktop.isDesktopSupported()) { // for windows
Desktop.getDesktop().browse(new URI(url));
} else { // for linux
Runtime runtime = Runtime.getRuntime();
runtime.exec("/usr/bin/firefox -new-window " + url);
}
}
}
检查打印语句是否提供URL。
如果可以,请提供您的评论