例如,我有一个.pdf
文件(该文件的路径)。如何在SWT应用程序中打开默认应用程序(可能是Acrobat Reader)来打开此文件(例如在按钮单击时)?
你可以使用以下代码:
Program.launch(file);
打开文件(使用默认应用程序或创建者)。根据Javadoc:
启动与文件或URL(http://或https://)相关联的操作系统可执行文件。如果文件是可执行文件,则会启动可执行文件。请注意,必须已经存在一个Display才能保证此方法返回适当的结果。
请注意,在Program.launch()
中存在一些特殊情况(或者至少在最近的运行时版本中有修复这些问题)。我不太记得错误的具体细节,但我们进行了一些检查以解决某些问题:
如果您在Unix平台上,并且指定了绝对路径,则可能无法打开该文件。我们使用“/。”前缀绝对路径 - 因此/tmp/foo
将被转换为/./tmp/foo
- 尽管我不太记得这个错误的具体细节。
在Windows上,如果您尝试打开UNC路径 - 例如\\server\bar
- 您需要将字符串用双引号括起来。例如:Program.open("\"\\server\bar\"");
Desktop.open()
时遇到了PermGen空间问题,这发生在我们的SWT应用程序之外。因此,在SWT环境中,我更喜欢使用Program.launch()
而不是Desktop.open()
。尝试使用 Desktop.open:
Desktop.getDesktop().open(file);
Program.launch("C:\\dev\\test.pdf");
可以很好地工作 - Acrobat Reader被打开,就是这样。谢谢。 - marioosh