我想在java应用程序中使用matlab函数。我在matlab中使用deploytool从我的函数创建java包。现在,我该如何使用这个包?只能在我的java项目中导入deploytool创建的jar文件并使用它的函数吗?
经过大量的谷歌搜索,我使用this toturial,但在最后一步,我得到错误“无法加载文件”。
我也读到了关于 MatlabControl 的内容,但在这个解决方案中,我们应该在我们的系统中使用matlab环境来运行java代码。但我会在可能根本没有matlab的系统中运行我的最终应用程序。
所以我需要一个解决方案来在java类中运行matlab函数,即使没有matlab环境。
答案 0 :(得分:2)
最后我解决了我的问题。解决方案一步一步如下:
编写matlab函数:
函数y = makesqr(x)
y = magic(x);
在matlab中使用deploytool并创建java包。
3.在Eclipse中创建新的java应用程序并添加主类。 import javabuilde.jar和makesqr.jar:
import com.mathworks.toolbox.javabuilder.MWArray;
import com.mathworks.toolbox.javabuilder.MWClassID;
import com.mathworks.toolbox.javabuilder.MWNumericArray;
import makesqr.Class1;
和main.java:
public class main {
public static void main(String[] args) {
MWNumericArray n = null;
Object[] result = null;
Class1 theMagic = null;
try
{
n = new MWNumericArray(Double.valueOf(5),MWClassID.DOUBLE);
theMagic = new Class1();
result = theMagic.makesqr(1, n);
System.out.println(result[0]);
}
catch (Exception e)
{
System.out.println("Exception: " + e.toString());
}
finally
{
MWArray.disposeArray(n);
MWArray.disposeArray(result);
theMagic.dispose();
}
}
}
将javabuilder.jar和makeqr.jar添加到项目的 java build path 。
运行它。
Double.valueOf(3),定义函数的输入,输出如下:
8 1 6
3 5 7
4 9 2
答案 1 :(得分:0)
我没有妥善解决你的问题。您是否已经从Matlab代码编译jar文件并且您正在尝试使用它,或者您正处于本教程的最后一步?
如果您的答案是最新的案例,很可能您忘记了"。"在课程之前。 从您链接的教程:
您必须确保在类路径的第一个位置放置一个点(。)。如果不是,则会收到一条消息,指出Java无法加载该类。
同时检查matlab编译器路径(" c:\ Program Files \ MATLAB \ MATLAB Compiler Runtime \ v82 \ toolbox \ javabuilder \ jar \ javabuilder.jar" - 在教程中)是否正确系统