Problems with MATLAB Engine API for Java
17 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Manuel Rios
le 18 Fév 2017
Réponse apportée : Bo Li
le 15 Mar 2017
I am trying to compile this piece of code:
import com.mathworks.engine.*;
public class javaEvalFunc {
public static void main(String[] args) throws Exception {
MatlabEngine eng = MatlabEngine.startMatlab();
eng.evalAsync("[X, Y] = meshgrid(-2:0.2:2);");
eng.evalAsync("Z = X .* exp(-X.^2 - Y.^2);");
Object[] Z = eng.getVariable("Z");
eng.close();
}
}
As you can see I need a reference to com.mathworks.engine.*;
matlabroot/extern/engines/java/jar/engine.jar
But in my computer I just have a folder called phyton in this path
matlabroot/extern/engines
Where can I find the .jar file that I need ?
I am using Eclipse IDE by the way. thanks.
3 commentaires
manan lalit
le 2 Mar 2017
Modifié(e) : manan lalit
le 2 Mar 2017
I have the same issue. I used the code written by Manuel and ran it on Eclipse after adding the external Engine JAR file from MATLAB 2016b, and ran into the following error.
Exception in thread "main" java.lang.NoClassDefFoundError: com/mathworks/mvm/MvmTerminatedException
at application.Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: com.mathworks.mvm.MvmTerminatedException
Can anyone help or have suggestions about what else I could try?
Anushan Vasantharajah
le 2 Mar 2017
I also have the same problem. Any one know the answer? :( please guys give some idea to sole the problem.
Réponse acceptée
Guillaume
le 2 Mar 2017
It would help if you used the documentation that come with your version. In R2016a, you will find no mention of the java engine, and that's because it's been introduced in R2016 (See the release notes under advanced software development).
You will have to upgrade to R2016b.
0 commentaires
Plus de réponses (1)
Bo Li
le 15 Mar 2017
With a simple test "example.java" like this:
import com.mathworks.engine.*;
public class CNN
{
public static void main(String[] args) throws Exception{
MatlabEngine eng = MatlabEngine.startMatlab();
double[] a = {2.0 ,4.0, 6.0};
double[] roots = eng.feval("sqrt", a);
eng.close();
}
}
Following commands work for me:
C:\JavaEngine\src>javac -classpath <matlabroot>\\extern\\engines\\java\\jar\\engine.jar
example.java
C:\JavaEngine\src>set PATH=<matlabroot>\\bin\\win64;%PATH%
C:\JavaEngine\src>java -classpath .;<matlabroot>\\extern\\engines\\java\\jar\\engine.jar
example
0 commentaires
Voir également
Catégories
En savoir plus sur Call MATLAB from Java dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!