Java调用Matlab算法

592 阅读1分钟

一.将Matlab算法程序转成Jar包

  1. 执行 deploytool 命令进行打包 image.png
  2. 选择Library Compiler image.png
  3. 执行完三步后 执行 Package image.png
  4. 打开生成目录:for_redistribution_files_only就可以看到Jar包 image.png

二.Java动态加载Matlab Jar

  1. 加载javabuilder.jar包 image.png 2.通过反射动态加载Jar调用Matlab算法
import cn.hutool.core.lang.JarClassLoader;
import cn.hutool.core.util.ClassLoaderUtil;

import java.io.File;
import java.lang.reflect.Method;
import java.util.List;

public class MatlabClassLoaderUtil {


    public static void dynamicLoadMethod(String filePath,String  className,String methodName,Object... params) throws Exception {
        File file = new File(filePath);
        JarClassLoader jarClassLoader = ClassLoaderUtil.getJarClassLoader(file);
        Class<?> matlab2JavaClass = jarClassLoader.loadClass(className);
        Object instance = matlab2JavaClass.newInstance();
        Method hellomatlab = matlab2JavaClass.getDeclaredMethod(methodName,Object [] .class);
        Object [] finalParams= new Object[]{params};
        hellomatlab.invoke(instance,finalParams);

    }

    public static void main(String[] args) throws Exception {
        long begin = System.currentTimeMillis();
        MatlabClassLoaderUtil.dynamicLoadMethod("D:\Matlab\java\demo\src\main\resources\hello.jar","hello.Class1","hellomatlab");
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
    }
}