0

この問題は私にとってランダムに発生しているように見えるので、私は本当に苦労しています。私が電話するとき、

Desktop.browse("some url");

InternetExplorerは表示されません。例外メッセージは次のとおりです。

要求されたルックアップキーは、アクティブなアクティベーションコンテキストで見つかりませんでした。

発生すると、マシンを再起動するまで一貫して発生しますが、最終的には再び発生します。

この問題が発生していると思われるワークステーションは、InternetExplorer8がデフォルトのブラウザとして設定されたWindowsXPを実行しています。

編集:Internet Explorerを直接開いて、問題のURLに移動すると、正常に機能することを忘れました。

EDIT2:これは、Desktop.browseが呼び出され、少なくとも15分後に再度呼び出された場合に発生するようです。アプリケーションを再起動すると、問題が解決したようです。

4

1 に答える 1

0

私は問題を絞り込んで、これを本当に引き起こしている原因を発見しました。結局のところ、それは時間とは何の関係もありませんでした。

java.awt.Desktop.browse("some url");アプリケーションの前のステップで、JACOBフレームワークを使用してプログラムでActiveXObjectが開かれたため、このエラーがスローされていました。

このActiveXObjectを使用してこのコードを作成した開発者は、わざわざリソースを解放することをまったく怠っていました。何らかの理由で、メモリ内のこのActiveXObjectは、java.awt.Desktopクラス内のデフォルトのOSブラウザへのDispatch呼び出しを妨げているかねじ込んでいました。これは理にかなっていると思います。

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();
}
于 2011-06-08T17:34:59.690 に答える