我无法在swt浏览器中加载jar:file
uri。同样的uri在我的firefox中加载很好,并且它加载了相同软件的旧版本。我能发现的唯一变化是旧的工作版本依赖于org.eclipse.core.resources
- 似乎没有任何理由。
但是,在重新创建依赖项后,页面仍然无法加载。
我在浏览器窗口中有这个:
Unable to load page
Problem occurred while loading the URL file:///usr/share/zenta/plugins/org.rulez.magwas.zenta.help_2.4.0.201401091630.jar!/hints/viewpoint_total.html
Error opening file: No such file or directory
我没有发现任何异常的迹象,也没有记录日志。
上述情况中的实际uri是:
jar:file:/usr/share/zenta/plugins/org.rulez.magwas.zenta.help_2.4.0.201401091630.jar!/hints/viewpoint_total.html
我正在使用此代码:
win.shell.pack();
win.shell.open();
Browser fBrowser = new Browser(win.getComposite(), SWT.NONE);
GridData gd = new GridData(GridData.FILL_BOTH);
fBrowser.setLayoutData(gd);
fBrowser.pack();
String cwd = System.getProperty("user.dir");
String url = "jar:file:/usr/share/zenta/plugins/org.rulez.magwas.zenta.help_2.4.0.201401091630.jar!/hints/viewpoint_total.html"
System.out.printf("cwd=%s\nurl=%s\n", cwd, url);
fBrowser.setUrl(url);
fBrowser.setFocus();
作为一个额外的问题:有没有办法检测浏览器的这种故障,所以当找到解决方案时,我可以为它编写一个单元测试?
答案 0 :(得分:1)
您可以使用JarUrlConnection
获取资源:
try {
InputStream in;
String url = "jar:file:/usr/share/zenta/plugins/org.rulez.magwas.zenta.help_2.4.0.201401091630.jar!/hints/viewpoint_total.html"
JarURLConnection con = (JarURLConnection)url.openConnection();
in = con.getInputStream();
// read the stream
} catch (MalformedURLException ex) {
System.err.println("Malformed URL: "+url);
} catch (IOException ex) {
System.err.println("IO error");
} finally {
in.close();
}