Java - Desktop.getDesktop (). Browse (URI) поддерживается, но не открывает документ (проблема с Citrix?) - PullRequest
4 голосов
/ 26 августа 2011

(Я не уверен, что это правильное место, чтобы задать этот вопрос. Пожалуйста, перейдите на подходящий сайт)

У меня проблема, показанная в приведенном ниже коде.Он не работает на компьютере (Windows 2008), на котором установлено приложение CITRIX Xen 6-.Там нет ошибки, просто браузер не запускается.На моем рабочем столе (окно 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)

Ответы [ 5 ]

2 голосов
/ 30 ноября 2012

Еще одна простая возможность, которую я протестировал на Windows XP:

org.eclipse.swt.program.Program.launch("file://" + filename);
1 голос
/ 31 августа 2011

Чтобы открыть локальный файл, вы должны использовать Desktop().open(), а не Desktop.browse()

1 голос
/ 31 августа 2011

Desktop.browse() запускает локальный веб-браузер.В Windows веб-браузер, вероятно, выводит его в оболочку по умолчанию, которая открывает файл.

Я предполагаю, что браузер в системе Citrix не может / не обрабатывает файл должным образом, поэтому не передаетэто в оболочку.

В любом случае оказывается, что если вы открываете файл (а не URL-адрес), то вместо него вы хотите использовать Destop.open().

1 голос
/ 31 августа 2011

Я думаю, что причиной этого признака является пакет awt, использующий системный вызов, который не поддерживает win2008. Но это совет.

Я думаю, вы должны попробовать другое решение для этого:

if (file.exists()) {
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file.toURI());
    } else {
        System.out.println(file.getAbsolutePath() + " does not exist");
    }
0 голосов
/ 14 января 2015

У меня была похожая проблема с классом Desktop.

Если файл не открывается, но выдает исключение, попробуйте отредактировать его.У меня были проблемы с некоторыми файлами изображений и окнами, потому что не было никакой связанной программы, кроме редактора.

...