Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Апплеты > desktop.open(file)


Автор: infarch 11.9.2013, 13:20
Я сделал аплет который облегчает работу с серверными файлами: скачивает, открывает в дефолтном приложении и закачивает отредактированный файл обратно. Но на одной машине в тестах он не открывает файлы. Просто ничего не происходит, никаких ошибок. Вот код:
Код

    public static boolean openFile(String localPath, String localName){
        String pathName = localPath + File.separatorChar + localName;
        boolean ok = false;
        try{        
            Desktop desktop = Desktop.getDesktop();
            if(desktop.isSupported(Desktop.Action.OPEN)){
                File file = new File(pathName);
                    //This is where a real application would open the file.
                desktop.open( file );
            }else{
                throw new UnsupportedOperationException("Your desktop does not support the 'open' action");
            }
            ok = true;
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return ok;
    }


Никаких ошибок не случается, файл на диске есть, приложение для открытия установлено, но ничего не происходит и все тут. На остальных машинах все работает. Вот конфигурация жавы:

Java Plug-in 10.25.2.17
Using JRE version 1.7.0_25-b17 Java HotSpot™ Client VM

Ось вин7 профешен 64

Подскажите плиз что можно придумать?



Автор: LSD 11.9.2013, 15:11
Добавь печать оладочной инфы: file.exists(), file.isDirectory(), file.canRead(), file.canWrite(), desktop.isSupported(Desktop.Action.OPEN)

Автор: infarch 11.9.2013, 16:22
Desktop.Action.OPEN и так проверяется, смотри код.
Проверки добавил:
file.exists() - да
file.isDirectory() - нет
file.canRead() - да
file.canWrite() - да

Все хорошо, но вот почему то не работает (

Автор: Mirkes 7.10.2013, 19:36
Может у приложения меньше прав и оно не может открыть?

Автор: LSD 8.10.2013, 10:55
Цитата(Mirkes @  7.10.2013,  20:36 Найти цитируемый пост)
Может у приложения меньше прав и оно не может открыть?

Тогда был бы SecurityException.

Автор: Mirkes 9.10.2013, 12:05
Я не пробовал именно такой способ запуска приложений, но если бы я сам искал причину, я попробовал бы просто позапускать из простейшего апплета без всякой логики на данной машине некоторые заранее известные файлы по абсолютным путям и т.д. К сожалению это совсем общий совет, но обычно результат может навести на мысли о том, где собака зарыта. кроме того, что происходит при двойном щелчке мышкой по запускаемому файлу в Windows?

Это не издевательский вопрос - на моем нынешнем компьютере при щелсче мышкой по MS Excel файлам происходит только попытка открыть их, но само открытие не происходит.

Автор: infarch 10.10.2013, 10:36
Пробовали и такое - без результата. При дабл клике файлы открываются нормально. В конце концов от греха подальше заменили метод открытия под виндой:
Код

if(isWindows()){
    ProcessBuilder pb = new ProcessBuilder("explorer.exe", pathName);
    pb.start();
}else{
        // ...
}

Так работает без проблем. По крайней мере аплет ушел в продакшен 3 недели назад и пока никто не жаловался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)