在java中打开文件时出现错误(windows 7)
问题描述:
我创建了一个生成excel电子表格(.xls)的程序,然后询问用户是否想立即打开它(如果是,它使用java.awt.Desktops打开()命令来这样做)。这在Windows XP中工作正常,但是当我尝试使用Windows 7时,它不起作用。下面是我的代码示例...在java中打开文件时出现错误(windows 7)
Desktop myDesk = null;
//if printed to file successfully and java.awt.Desktop is supported
if (printed && Desktop.isDesktopSupported())
{
myDesk = Desktop.getDesktop();
if (myDesk.isSupported(Desktop.Action.OPEN))
{
//ask to open file
int openFile = JOptionPane.showConfirmDialog(null, "File successfully
created.\nWould you like the excel file to open?",
"open file?", JOptionPane.YES_NO_OPTION);
//try to open file
if (openFile == JOptionPane.YES_OPTION)
{
try { myDesk.open(myFile); }
catch (IOException e){ JOptionPane.showMessageDialog(null, "Problem
opening file automatically, please open it
yourself.", "Error", JOptionPane.ERROR_MESSAGE); }
}
}
}
在此成功打印到文件的Windows 7,它显示了中openFile对话,则显示错误的对话。这不应该发生,因为为了获得openFile对话,Desktop和Desktop.open()都应该被支持。这可能与试图打开“.xls”文件而不是“.xlsx”文件有关,但是Excel文件仍然应该被设置为默认文件类型...
因此,有关此原因的任何想法正在发生?无论是如何解决这个问题,还是有另一种方法可以打开一个更好地普遍适用的文件?
答
这听起来像是一个标准的Vista/7 UAC问题。您可能想尝试在控制面板 - >用户帐户 - >打开或关闭用户帐户控制中打开用户帐户控制(UAC)。
[Javadoc](http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)),为这些人节省了一点时间试图回答:“IOException - 如果指定的文件没有关联的应用程序或关联的应用程序无法启动”。 – 2011-06-02 19:33:58
@ michael-myers但是excel被设置为关联的应用程序(如果我双击该文件,它会在excel中打开而没有问题),那么为什么excel无法启动? – scaevity 2011-06-02 19:56:00