18

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 の入力引数は問題ではなく、常にハングするため、この例では入力として '' を指定しました。

4

3 に答える 3

1

DdeInitialize() メソッドで原因不明のコードがハングします。新しいビルド JDDE-2.0.3 には、この問題の回避策が含まれています。

于 2013-09-18T13:06:16.967 に答える
1

jar に依存するコードを実行しようとする前に 1 秒か 2 秒かかるように、add path コマンドを単独で実行してみてください。これは、Matlab の jar に関係する断続的な問題でしばしば問題になることがわかりました。

于 2013-05-18T02:57:14.323 に答える
0

最初にクラシックモードに切り替えて、それを取り除きます.

于 2013-03-21T12:28:27.977 に答える