2012-03-29 2 views

ответ

10

Вы должны быть в состоянии использовать:

Program.launch(file); 

открыть файл (с помощью приложения по умолчанию или создателя). Из javadoc:

Запускает исполняемый файл операционной системы, связанный с файлом или URL-адресом (http: // или https: //). Если файл является исполняемым, тогда запускается исполняемый файл. Обратите внимание, что Display должен уже существовать, чтобы гарантировать, что этот метод возвращает соответствующий результат.

Обратите внимание, что есть некоторые особенности в Program.launch() (или, по крайней мере, было, хотя это, возможно, было зафиксировано в более поздних версиях среды выполнения.) Я не помню специфику ошибок, но мы сделать некоторые проверки, чтобы обойти некоторые проблемы:

  1. Если вы на платформе Unix, и вы указываете абсолютный путь, может быть проблемы открытия этого файла. Мы префикс абсолютных путей с /. - так что /tmp/foo будет переведен на /./tmp/foo - хотя я не помню специфику этой ошибки больше.

  2. В Windows, если вы пытаетесь открыть UNC-путь - например, \\server\bar - вам нужно обернуть строку в двойные кавычки. Например: Program.open("\"\\server\bar\"");

+0

В моем приложении на winXp и win7 'Program.launch (« C: \\ dev \\ test.pdf »);' call work good - открыт Acrobat Reader и все. Спасибо. – marioosh

+0

@ edward-thomson, в котором пакет «Класс программы» найден? –

1

Попробуйте Desktop.open:

Desktop.getDesktop().open(file); 
+2

Лично я предпочел бы решение SWT над AWT. Мост SWT <-> AWT обычно не нужен, и лучше не использовать его, если вам не нужно. –

+2

@PranitBauva Почему? – Baz

1

Может быть, это может помочь найти решение: мы столкнулись PermGen пространства проблемы при вызове Desktop.open() - который в AWTpackage - из нашего SWT приложения.

Так что я предпочел бы Program.launch() более Desktop.open() в SWT-среде.

Смежные вопросы