您的位置:首页 > 编程语言 > MATLAB

[Note]matlab中调用java类或运行java

2017-03-23 20:26 246 查看

摘要

matlab中可以调用java程序或者自己写的工具类。一般情况下可以直接动态添加java类的class文件。但是对于一些自己编写的有依赖的类,例如一个ExcelUtil类调用了POI的jar包,这样添加起来就十分麻烦,我也没有找到方法添加,并且成功创建类对象==。但是可以直接把自己写的类或者项目导成jar包,把依赖的jar包也添加到matlab中就行了。

下面三个方法需不需要重启matlab我没有过多深究,建议设置完重启一下。我设置完是后重启的,也不尽然,比如……往下看

方法一:添加动态路径

1、matlab中可调用的java类相关的文件(jar包)一般存放在java class path中。在matlab中输入命令:

javaclasspath


可以查看所有的路径。其中路径分静态路径和动态路径。

(静态java路径部分结果)

静态 JAVA 路径

D:\MATLAB 2014a\java\patch
D:\MATLAB 2014a\java\jarext\AnimatedTransitions.jar
D:\MATLAB 2014a\java\jarext\ant.jar
D:\MATLAB 2014a\java\jarext\ant-launcher.jar
D:\MATLAB 2014a\java\jarext\antlr.jar
D:\MATLAB 2014a\java\jarext\felix.jar
D:\MATLAB 2014a\java\jarext\scr.jar
D:\MATLAB 2014a\java\jarext\axis2\activation.jar
D:\MATLAB 2014a\java\jarext\axis2\axiom-api.jar
D:\MATLAB 2014a\java\jarext\axis2\axiom-impl.jar


把自己写的类的class文件保存到一个文件夹,然后运行下面的代码,添加动态路径。

javaaddpath('D:\MATLAB 2014a\MyJavaClass\bin')


显示结果(成功):

动态 JAVA 路径

D:\MATLAB 2014a\MyJavaClass\bin


之后就可以创建目标类的实例对象了。

注意!!

但是这个方法是一次性的。如果第二次用就要再次添加路径了!这个方法重启?:-D

方法二:添加静态路径

其实上面的系统路径下有一个文件文件classpath.txt。此文件定义了matlab环境下可以直接引用jar包(静态路径)。一般这个文件的完整路径为:

[matlabroot'\toolbox\local\classpath.txt']


也可以在matlab中直接输入这个命令编辑这个文件。

edit classpath.txt


之后把自己写好类或项目创建而成的jar包和依赖的jar包所在的路径写入文件最后就行。这里的ExcelTool.jar是我自己写的。而下面的5个jar包是调用POI需要的依赖包。要写上包名!

D:\MATLAB 2014a\MyJavaClass\jar\ExcelTool.jar
D:\MATLAB 2014a\MyJavaClass\jar\dom4j-1.6.1.jar
D:\MATLAB 2014a\MyJavaClass\jar\poi-3.8-20120326.jar
D:\MATLAB 2014a\MyJavaClass\jar\poi-ooxml-3.8-20120326.jar
D:\MATLAB 2014a\MyJavaClass\jar\poi-ooxml-schemas-3.8-20120326.jar
D:\MATLAB 2014a\MyJavaClass\jar\xmlbeans-2.3.0.jar


结果可行,成功创建类对象。这种方法除非删了路径或者jar包,不需要再次添加。

方法三:通过java加载机制,添加jar包到路径

1、把自己写好的类导出成为jar包。

2、matlab中运行下面代码

disp(java.lang.System.getProperty('java.ext.dirs'))


显示结果:

D:\MATLAB 2014a\sys\java\jre\win64\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext


3、把我们的jar包放在第一个路径下,如果有其他依赖的jar包,一并放进来。然后就可以创建java类对象了。

在matlab命令行中输入实例化类的代码:

excelOper=com.excel.util.ExcelOperate;


左下角工作区已经有excelOper对象成功创建。

!!!

这个方法保存到的jar包并不是静态路径。而是通过java的类加载机制,自己不是太懂。(大概查了一下是这样)先记下,写完毕设在仔细研究一下。先记录。

!!!

毕设~~~~ (+_+)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java matlab class