Jla-файл Matlab Java заблокирован после исключения - PullRequest
3 голосов
/ 23 апреля 2019

В Matlab R2018a под Windows 8 после выполнения jar исключения файла выброса AddressException, MessagingException (код ссылки ref.1 ) из команды system() MATLAB, jar дескриптор файла заблокирован.

1:java.nio.file.FileSystemException: HelloWorld.jar: The process cannot access the file because it is being used by another process.

Поскольку вызов системной оболочки (командная строка): [status,result]=system(command) или ! завершил свое выполнение, правильный дескриптор потерян (где?) И его невозможно закрыть. Обратите внимание, что параметры status и result представляют собой только сообщение об ошибке и возвращаемое значение int без ссылки на дескриптор.

При проверке связанного дескриптора HelloWorld с Windows resmon.exe мы получили:

Matlab.exe | <pid> | File | <path\to\java\file.jar>

Когда триинг удалить HelloWorld.jar, мы получили:

File in Use. The action can't be completed because the file is open in MATLAB R2018a.

Следующие подходы не работают:

  • Закрытие файловых дескрипторов, fclose('all'), так как никакая команда fopen (напрямую?) Не задействована ( ref.2 , ref.3 ),
  • Сборка мусора Java java.lang.System.gc(), java.lang.Runtime.getRuntime().gc, clear java, clear all, поскольку объект Java еще не создан (пока),
  • Очистка пути Java javarmpath('HelloWorld.jar'), поскольку путь Java не добавлен (пока).

Как мне отпустить эту ручку, не закрывая MATLAB?.

...