В 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?.