对于Windows 7或XP上的签名java小程序,什么会导致Desktop.isDesktopSupported()为true,而Desktop.isSupported(Desktop.Action.OPEN)为false?
我有一大群用户无法从已签名的小程序中启动本地创建的文件(PDF、Word等)。双击Windows资源管理器中的文件将启动该文件,以便知道与启动应用程序的文件关联。技术支持人员在启用UAC的机器上远程登录,加载小程序没有问题,可以毫无问题地启动本地文件。这让我觉得这个大群体有一个共同的地方背景。用户正在Windows XP上运行Java 1.6u31(或7,不确定)。java控制台中没有显示任何错误,也没有显示任何内容(这都是传闻,因为我没有看到问题)。对于可能导致此行为的本地PC设置有何建议?根据代码,问题似乎是Desktop受支持,但Desktop.Action.OPEN不受支持。有什么建议吗?谢谢。对于Windows 7或XP上的签名java小程序,什么会导致Desktop.isDesktopSupported()为true,而Desktop.isSupported(Desktop.Action.OPEN)为false?,java,file,applet,launch,signed,Java,File,Applet,Launch,Signed,我有一大群用户无法从已签名的小程序中启动本地创建的文件(PDF、Word等)。双击Windows资源管理器中的文件将启动该文件,以便知道与启动应用程序的文件关联。技术支持人员在启用UAC的机器上远程登录,加载小程序没有问题,可以毫无问题地启动本地文件。这让我觉得这个大群体有一个共同的地方背景。用户正在Windows XP上运行Java 1.6u31(或7,不确定)。java控制台中没有显示任何错误,也没有显示任何内容(这都是传闻,因为我没有看到问题)。对于可能导致此行为的本地PC设置有何建议?根
我正在使用以下命令启动该文件:
/*
//old way that would work for Windows prior to Java 1.6
//cmd = System.getenv("windir") +"\\system32\\"+"rundll32 SHELL32.DLL,ShellExec_RunDLL " + cmd;
//cmd = "open "+cmd; // Mac for PDF only?
//try{
// Runtime.getRuntime().exec(cmd);
//} catch (Exception e) {
// //handle error
//}
*/
Desktop desktop = null;
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.OPEN)) {
try {
desktop.open(new File(file));
return;
} catch (IOException e) {
//Error launching the file
e.printStackTrace();
JOptionPane.showMessageDialog(theFrame,
"Unable to launch the file.",
"Document Error", JOptionPane.ERROR_MESSAGE);
return;
}
}
} else {
//This OS cannot launch the file
JOptionPane.showMessageDialog(theFrame,
"This operating system is unable" +
"\nto launch external files" +
"\nfrom within this application.",
"Document Error", JOptionPane.ERROR_MESSAGE);
return;
}
纯粹的猜测:
1) 受影响的用户都在Windows 7上
2) Vista/Win 7“UAC”正在咬你:
建议(仅诊断性):
“希望有帮助 我明白了用户什么也看不到的原因:桌面受支持,但Desktop.Action.OPEN不受支持,并且我不显示有用的消息。所以问题是什么地方环境会导致这种行为?它是Windows配置还是Java配置?再次感谢!我在发布后也发现了这个问题,但我认为不是这样。我在自己的Win 7机器上有多个帐户,并将UAC设置为最严格的级别“始终通知”,我没有发现问题。不过,我还是会请技术人员提出建议。我也在网站上找到了对MagicISO的引用,并询问了这一点。谢谢。正在启动什么类型的文件?我运行Windows7并启用了UAC,但从未尝试过使用它来启动可执行文件。我想他们是UAC唯一会提示的东西。没有可执行文件。它将是用户创建的文件,如PDF、Word、Excel等。用户创建并上载文件,小程序允许用户通过按钮启动来验证刚刚上载的文件是否正确。该按钮是用户请求的,所以不要根据我的界面来判断我!谢谢,谢谢你进一步的调查。RE 2)问题相同,但未提出解决方案。RE 3)“更新您的JDIC”,不确定在这里要做什么。用户应具有标准JRE 1.6u31或更新版本(或1.7.x)。我以为桌面对象包含在标准安装中。RE 4)我在本地开发环境和技术支持下载与问题用户相同的jar时没有发现问题,因此在开发服务器上本地添加按钮对我没有帮助(除非我非常绝望,否则我无法要求问题用户登录我的开发服务器)。还在看。。。谢谢。@paulsm4谢谢。这仍然是一个问题。我正在使用带有管理员帐户的远程桌面连接到有问题的客户端XP计算机。“desktop.open(x);”未引发异常。在打印之前/之后进行调试,其间没有任何内容,但没有打开任何文件。我已尝试在Task Manager中关闭一些服务、病毒保护和终止某些内容。所有这些对XP机器都没有影响,我在自己的机器上运行相同的应用程序时仍然没有看到任何错误。我看到有关MagicIso问题的参考资料,但这台计算机上没有。任何其他建议将不胜感激!
Control Panel->User Accounts->Turn User Account Control off