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