6

(我不确定这是否是问这个问题的正确地方。请移至合适的网站)

我有一个问题,如下面的代码所示。它不适用于具有 CITRIX Xen App 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");
        }
    }
}

我尝试按照以下答案中的建议使用“打开”。它不起作用。问题缩小到 64 位版本的 Java(Oracle 1.6.0_25)

4

5 回答 5

4

要打开本地文件,您必须使用Desktop().open()notDesktop.browse()

于 2011-08-31T10:35:41.200 回答
2

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

我认为您应该为此尝试其他解决方案:

if (file.exists()) {
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file.toURI());
    } else {
        System.out.println(file.getAbsolutePath() + " does not exist");
    }
于 2011-08-31T10:31:43.783 回答
2

我在 Windows XP 上测试过的另一种简单的可能性:

org.eclipse.swt.program.Program.launch("file://" + filename);
于 2012-11-30T08:53:38.210 回答
1

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

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

无论如何,如果您正在打开一个文件(而不是 URL),那么您似乎想要使用它Destop.open()

于 2011-08-31T13:02:20.063 回答
0

我在桌面级遇到了类似的问题。

如果文件无法打开但引发异常,请尝试对其进行编辑。我遇到了一些图像文件和窗口的问题,因为没有关联的程序,只有一个编辑器。

于 2015-01-14T20:10:51.597 回答