如何从Java启动给定文件的默认(本机)应用程序?

我正在显示一个文件列表; 即我的Java应用程序(Eclipse RCP)中的xls,doc,pdf,odt等。 当用户单击该文件时,我想启动适当的(根据操作系统认为的)本机应用程序,就像在Windows资源管理器或Finder中一样。

当我在这里时:最好还显示Finder或Explorer用于不同文件类型的相同图标。

是否有一个库或Eclipse插件?

你想要的是java.awt.Desktop :

Desktop.getDesktop().open( file ); 

我现在在Eclipse的SWT中找到了一个API,它似乎可以解决这个问题: org.eclipse.swt.program.Program “提供了访问设备以访问外部程序启动的操作系统特定方面。”

它有方法可以找到给定文件扩展名的程序,获取程序的图标,甚至启动程序。

听起来像是在Java Activation Framework (“JAF”)之后。 通过此API,您可以确定哪些文件以及可以对其执行的操作。 或者Java桌面集成组件 (“JDIC”)。 JDIC允许您创建并毫无疑问地查询文件关联。

两个项目似乎处于半被遗弃状态(叹气)。 但这对于Sun这几天的课程而言是相同的。 我所知道的另一件事是一些基于JNI的Windows特定第三方库,名为Winpack 。 它也做了很多其他的事情。

您可以使用FileSystemView类(Java 1.4+) 获取关联的图标 。