Java - Desktop.getDesktop().browse(URI) is supported, but does not open document (a citrix problem?)

ぃ、小莉子 提交于 2020-01-27 08:26:04

问题


(I am not sure if this is the correct place to ask this question. Please move to suitable site)

I have a problem that is shown in below code. It does not work on machine (windows 2008) that has CITRIX Xen App 6-. There is no error, just that browser does not get launched. On my desktop (a windows7 box), it works.

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");
        }
    }
}

I tried to use "open" as suggested in following answers. It did not work. The problem is narrowed down to 64bit version of Java(Oracle 1.6.0_25)


回答1:


I think the cause of this symptom is the awt package what uses a system call what the win2008 not supports. But it's a tip.

I think You should try an other solution for this:

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



回答2:


Another easy possibility that I have tested on Windows XP:

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



回答3:


To open a local file you have to use Desktop().open() not Desktop.browse()




回答4:


Desktop.browse() launches the local web browser. On Windows, the web browser is probably kicking it out to the default shell, which opens the file.

My guess is that the browser on the Citrix system cannot/doesn't handle the file properly, thus not passing it to the shell.

In any case, it appears that if you are opening a file (and not a URL), then you want to use Destop.open() instead.




回答5:


I had a similar problem with the Desktop-class.

If the file will not open but throws an exception, try to edit it. I had trouble with some image files and windows, because there was no associated program but an editor.



来源:https://stackoverflow.com/questions/7201722/java-desktop-getdesktop-browseuri-is-supported-but-does-not-open-document

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!