Я использую внешний Java-пакет jdde в MATLAB. Обратите внимание, что в следующем примере DLL файл, поставляемый вместе с пакетом, должен находиться в библиотечном пути MATLAB. Метод для этого отличается от вашей версии MATLAB.
Использование jdde в MATLAB отлично работает, за исключением первого раза после перезагрузки компьютера или выхода из системы logon в 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 (2010 и 2012). Я использую Windows 7 x64.
В примере кода команда a.connect - это та, которая заставляет MATLAB оставаться навсегда. Включение этой команды в блок try/catch не помогло бы, потому что a.connect не вызывает ошибку, она просто никогда не продолжается.
Я не уверен, вызвана ли эта проблема MATLAB или пакетом java. Любые идеи, как избавиться от этого поведения, будут высоко оценены.
Примечание. Входной аргумент a.connect не имеет значения, он всегда будет зависать, поэтому я просто дал "как вход" в этом примере.