MATLAB зависает, когда я пытаюсь использовать java-пакет jdde, но только в первый раз после перезагрузки системы

Я использую внешний пакет java jdde в MATLAB. Обратите внимание, что в следующем примере DLL-файл, который поставляется с пакетом, должен находиться в пути библиотеки MATLAB. Способ сделать это отличается в зависимости от вашей версии MATLAB.

использование jdde в MATLAB отлично работает, за исключением первого раза после перезагрузки компьютера или выхода/входа в 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).

I видели такое поведение на разных компьютерах и в разных версиях MATLAB (2010 и 2012). Я использую Windows 7 x64.

в примере кода a.команда connect-это та, которая заставляет MATLAB оставаться занятым навсегда. Помещение этой команды в блок try/catch не поможет, потому что a.connect не вызывает ошибки,он просто никогда не продолжается.

Я не уверен, вызвана ли эта проблема MATLAB или пакетом java. Любые идеи, как избавиться от этого поведение было бы очень оценено.

Примечание: входной аргумент a.подключение не имеет значения, оно всегда будет висеть, поэтому я просто дал " в качестве ввода в этом примере.

3 ответов


код зависает без какой-либо причины в методе DdeInitialize (). Новая сборка JDDE-2.0.3 содержит обходной путь для этой проблемы.


попробуйте запустить команду add path самостоятельно, чтобы была секунда или две, прежде чем она попытается выполнить код, зависящий от jar. Я обнаружил, что это часто проблема с прерывистыми проблемами, связанными с банками в Matlab


переключитесь в классический режим изначально, чтобы u избавился от этого.