Подтвердить что ты не робот

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

Я использую внешний 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 не имеет значения, он всегда будет зависать, поэтому я просто дал "как вход" в этом примере.

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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