Erro ao chamar o arquivo m compilado (.jar) em um aplicativo Java multiencadeado
Eu tenho um arquivo m simples
function [fRate,Height,Width] = media(filename)
obj = mmreader(filename);
fRate = obj.FrameRate;
Width = obj.Width;
Height = obj.Height;
end
Que eu tenho compilado com sucesso usando o MATLAB Builder JA em um arquivo .jar.
Eu testei o arquivo .jar em um único aplicativo encadeado e ele funciona sem nenhum problema.
O erro veio quando eu usá-lo em um aplicativo GUI multi-threaded. Eu corro o .jar como um segmento em uma das classes que criei e o seguinte erro ocorre.
Um erro inesperado foi detectado pelo Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) no pc = 0x6d9c08b0, pid = 5920, tid = 4788
Java VM: Cliente Java HotSpot (TM) VM (10.0-b19 modo misto windows-x86) Quadro problemático:
C [jvm.dll + 0x1108b0]
Após a depuração, descobri que o erro ocorre quando meu thread está chamandomedia = new Media();
(Eu nomeio meu .jar como Media.jar)
Este é o meu código 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>}
O que está errado? É meu código?