[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
- java调用matlab
- 运行时获取方法调用堆栈信息(java)
- java中调用matlab代码
- java 中调用 Matlab 的函数
- JAVA JNI 调用C/C++库提高运行效率 (图)
- java调用matlab
- java调用matlab代码方法[matlab version 2010a]
- 使用Eclipse运行Java代码调用JDBC读写MySQL中文变成问号的终极解决办法
- Java调用MATLAB作图是的ERROR--MWEException
- Java多线程运行时,尽可能调用单例对象、工具类和静态方法,这样可以减少内存的占用量
- java调用matlab
- MATLAB Java builder的使用——在JAVA中调用MATLAB代码
- 使用Eclipse运行Java代码调用JDBC读写MySQL中文变成问号的终极解决办法
- Java运行时调用方法、方法名、及行数
- java调用matlab的总结
- java 命令行调用,更改当前路径,程序运行出错
- 转:jsp调用长时间运行java 程序,如何防止浏览器超时断连
- 让tomcat一运行就开始调用某个java类
- java调用matlab