Java -支持Desktop.getDesktop().browse(URI),但不能打开文档(citrix问题?)



(我不确定这是否是问这个问题的正确地方。请移到合适的位置)

我有一个问题,显示在下面的代码。它不能在具有CITRIX Xen应用程序6-的机器(windows 2008)上工作。没有错误,只是浏览器没有启动。在我的桌面(windows7盒子)上,它可以工作。

package trials;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class Launch {
    public static void main(String[] args) throws IOException {
        if (args.length < 1) {
            System.out.println("argument filepath expected");
            return;
        }
        final boolean browseSupported = Desktop.getDesktop().isSupported(Desktop.Action.BROWSE);
        if ( !browseSupported) {
            System.out.println("Browse not supported");
            return;
        }
        final String filename = args[0];
        final File file = new File(filename);
        if (file.exists()) {
            Desktop.getDesktop().browse(file.toURI());
        } else {
            System.out.println(file.getAbsolutePath() + " does not exist");
        }
    }
}

我试着按照以下答案中的建议使用"open"。但没有成功。问题被缩小到64位版本的Java(Oracle 1.6.0_25)

打开本地文件必须使用Desktop().open()而不是Desktop.browse()

另一个我在Windows XP上测试过的简单方法:

org.eclipse.swt.program.Program.launch("file://" + filename);

我认为这个症状的原因是awt包使用了win2008不支持的系统调用。但这是一个提示。

我觉得你应该试试别的办法:

if (file.exists()) {
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file.toURI());
    } else {
        System.out.println(file.getAbsolutePath() + " does not exist");
    }

Desktop.browse()启动本地web浏览器。在Windows上,web浏览器可能会将其踢出到默认shell中,该shell将打开文件。

我的猜测是Citrix系统上的浏览器不能/不能正确地处理文件,因此没有将其传递给shell。

在任何情况下,如果你打开一个文件(而不是一个URL),那么你想使用Destop.open()代替。

我在使用Desktop-class时也遇到了类似的问题。

如果文件无法打开但抛出异常,请尝试编辑它。我在处理一些图像文件和windows时遇到了麻烦,因为没有相关的程序,只有一个编辑器。

最新更新