2012-03-29 141 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”);'调用工作正常 - 打开Acrobat Reader,就是这样。谢谢。 – marioosh 2012-03-30 22:58:10

+0

@ edward-thomson在哪个包中找到“Program”类? – 2012-11-14 04:23:13

1

尝试Desktop.open:

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

就我个人而言,我更喜欢SWT解决方案,而不是AWT解决方案。 SWT <-> AWT桥梁通常是不必要的,除非必须,否则最好不要使用它。 – 2012-03-30 01:35:52

+2

@PranitBauva为什么? – Baz 2013-12-10 09:30:03

1

也许这可以帮助找到了一个决定:我们根据呼叫Desktop.open()跑进PermGen space的麻烦 - 这是在AWTpackage - 我们的SWT应用程序。

所以我宁愿Program.launch()超过Desktop.open()在SWT环境。

相关问题