Ошибка при вызове скомпилированного m-файла (.jar) в многопоточном приложении Java

У меня простой м-файл

function [fRate,Height,Width] = media(filename)  
obj = mmreader(filename);  
fRate = obj.FrameRate;  
Width = obj.Width;  
Height = obj.Height;  
end

Который я успешно скомпилировал с помощью MATLAB Builder JA в файл .jar.

Я протестировал файл .jar в однопоточном приложении, и он работает без проблем.

Ошибка возникла, когда я использую его в многопоточном приложении с графическим интерфейсом. Я запускаю .jar как поток в одном из созданных мною классов, и возникает следующая ошибка.

Непредвиденная ошибка была обнаружена Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) при pc = 0x6d9c08b0, pid = 5920, tid = 4788

Java VM: клиентская виртуальная машина Java HotSpot (TM) (смешанный режим 10.0-b19 windows-x86) Проблемный кадр:

C [jvm.dll + 0x1108b0]

После отладки я обнаружил, что ошибка возникает, когда мой поток вызывает
media = new Media(); (Я называю мой .jar как Media.jar)

Это мой код Java:
// mediaProperty.java

<p>public class mediaProperty implements Runnable {</p><pre><code>public void mediaProperty() { Matlab_options matlab = new Matlab_options(); Object[] mediaProp = null; java.util.List lstMedia = new ArrayList(); Media media = null; try { media = new Media(); ... mediaProp = media.media(3, lstMedia); ... } catch (Exception p) { System.out.println("Exception: " + p.toString()); } finally { MWArray.disposeArray(mediaProp); if (media != null) { media.dispose(); } } } public void run() { mediaProperty(); } </code></pre>

}<br>

// GUI.java

private Thread mediap;

if (mediap == null) {<br>mediap = new Thread(new mediaProperty());<br>mediap.start();<br>}

Что случилось? Это мой код?

Ответы на вопрос(1)

Ваш ответ на вопрос