MATLAB で外部 Java パッケージjddeを使用しています。次の例では、パッケージに付属する DLL ファイルが MATLAB ライブラリ パス上にある必要があることに注意してください。これを行う方法は、MATLAB のバージョンによって異なります。
MATLAB で jdde を使用すると、コンピューターの再起動後または Windows でのログオフ/ログオン後の初回を除き、正常に動作します。コンピューターの再起動後に初めて次のコードを実行すると、MATLAB は永遠にビジー モード (0% CPU) のままになります。これが発生した場合、タスク マネージャーで MATLAB プロセスを強制終了し、MATLAB を再起動します。同じコードを再度実行すると、すぐに実行されます (永遠にビジー状態になることはありません)。
javaaddpath('C:\pretty-tools-JDDE-1.0.2.jar')
a = com.pretty_tools.dde.client.DDEClientConversation;
a.connect('','');
要約すると、上記のコードにより、システムの再起動後またはユーザーのログオフ/ログオン後に初めて MATLAB を実行すると、MATLAB は永久にビジー状態になります。MATLAB プロセスを強制終了した後に再度実行すると、完全に正常に動作します (MATLAB がハングアップすることはありません)。
この動作は、さまざまなコンピューターやさまざまなバージョンの MATLAB (2010 および 2012) で確認されています。Windows 7 x64 を使用しています。
コード例では、a.connect コマンドが、MATLAB を永遠にビジー状態にする原因となっています。このコマンドを try/catch ブロックに入れても役に立ちません。なぜなら、a.connect はエラーを引き起こさず、続行しないからです。
この問題が MATLAB に起因するのか、Java パッケージに起因するのかはわかりません。この動作を取り除く方法についてのアイデアは大歓迎です。
注: a.connect の入力引数は問題ではなく、常にハングするため、この例では入力として '' を指定しました。