Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Desktop.browse偶尔返回“;在任何活动激活上下文中找不到请求的查找密钥”;_Java_Internet Explorer_Activexobject_Jacob - Fatal编程技术网

Java Desktop.browse偶尔返回“;在任何活动激活上下文中找不到请求的查找密钥”;

Java Desktop.browse偶尔返回“;在任何活动激活上下文中找不到请求的查找密钥”;,java,internet-explorer,activexobject,jacob,Java,Internet Explorer,Activexobject,Jacob,我真的在努力解决这个问题,因为它对我来说似乎是随机发生的。当我打电话时 Desktop.browse(“一些url”) Internet Explorer将不显示。异常消息如下所示: 在任何活动激活上下文中都找不到请求的查找密钥 当它发生时,它会一直发生,直到我重新启动机器,但它最终会再次发生 出现此问题的工作站正在运行Windows XP,并将Internet Explorer 8设置为默认浏览器 编辑:我忘了提到,如果我直接打开Internet Explorer并导航到有问题的URL,那么它

我真的在努力解决这个问题,因为它对我来说似乎是随机发生的。当我打电话时

Desktop.browse(“一些url”)

Internet Explorer将不显示。异常消息如下所示:

在任何活动激活上下文中都找不到请求的查找密钥

当它发生时,它会一直发生,直到我重新启动机器,但它最终会再次发生

出现此问题的工作站正在运行Windows XP,并将Internet Explorer 8设置为默认浏览器

编辑:我忘了提到,如果我直接打开Internet Explorer并导航到有问题的URL,那么它就可以正常工作


EDIT2:如果调用Desktop.browse,然后至少15分钟后再次调用,则可能会发生这种情况。现在重新启动应用程序似乎可以解决问题。

我缩小了问题范围,发现了真正的原因,毕竟这与时间无关

java.awt.Desktop.browse(“一些url”)
引发此错误,因为在应用程序的前一步中,使用JACOB框架以编程方式打开了ActiveXObject

使用此ActiveXObject编写此代码的开发人员完全忽略了释放资源的麻烦。出于某种原因,内存中的这个ActiveXObject阻止或破坏了对
java.awt.Desktop
类中默认OS浏览器的分派调用。我想这是有道理的

我通过声明一个JACOB事务并释放finally块中的所有资源修复了这个问题,如下所示:

ActiveXObject ao1 = null;
ActiveXObject ao2 = null;
ComThread.initMTA();
try {
  ao1 = new ActiveXObject("blaa.blaa");
  ao2 = new ActiveXObject("haa.haa");
  // business logic
} finally {
  if (ao1 != null) {
    ao1.safeRelease();
    ao1 = null;
  }
  if (ao2 != null) {
    ao2.safeRelease();
    ao2 = null;
  }
  ComThread.Release();
}