class - Calling Java from MATLAB -
i have been using swig create java wrapper a library written in c++. wrappers generated package , jar'ed. files compiled correctly , work java can't call matlab.
i tried adding path jar in static java path file in matlab , calling classes in jar file error "undefined variable or class.." or if try using javaobject(...) "no class * can located on java class path".
i'm not sure doing wrong.
edit:
to test calling c++ library matlab, created simple "data reader" class contains function writes randomly generated vector< vector<double> > text file , and function reads it.
the swig files generated are: simplereader.java, doublevector.java, examplejni.java, example.java, doublevector2.java in package com.example.reader. these compiled , packed example.jar (the library dll generated packed jar).
it works fine calling java problem must specific matlab. there not code matlab nothing seems work. far as
javaclasspath('c:/reader/reader.jar'); obj = com.example.reader.simplereader; at point 'undefined variable "com" or class "com.example.reader.simplereader"'
in general you're supposed able this:
javaclasspath('/path/to/myjar.jar') myobj = com.example.mypackage.myobject; myobj.somemethod(123); i've been using matlab quite while , have had no trouble. perhaps post exact matlab code using?
i far
javaclasspath('c:/reader/reader.jar'); obj = com.example.reader.simplereader;at point 'undefined variable "com" or class "com.example.reader.simplereader"'
well, starters, mentioned jarfile called example.jar, matlab code references reader.jar -- sure jar you're referencing in javaclasspath() exists? have tried looking @ contents of it? (e.g. 7zip or program can read .zip-format files, since .jar files .zip-format files additional specifications)
hmmm...
- which version of matlab using?
- are classes public?
what when try typing following:
javap -classpath c:/reader/example.jar com.example.reader.simplereader
you you're using version 7.0.4 -- problem. earlier versions of matlab use older version of java jre:
matlab supported on jvm ship matlab. example:
jvm 1.3.1 matlab 6.5.1 (r13sp1)
jvm 1.4.2 matlab 7.0.1 (r14sp1)
matlab 7.0.4 (r14sp2) , later versions till matlab 7.4 (r2007a) use jvm 1.5 , matlab 7.5 (r2007b) , later use jvm 1.6. there components may not work under different version of jvm.
you have 3 choices @ point.
(if possible) -- use jar files compatible java 5. in case, since you're making own library, need use the
-target 1.5option. (target="1.5"if you're using ant<javac>task) isn't huge deal, since 1.6 kind of incremental improvement 1.5 -- although if you're using of few java 6 classesarraydeque, or external libraries depend on 1.6, you're out of luck.use jre 1.6 matlab 7.4 changing jvm. not sure idea.
upgrade matlab version runs on java 6 (r2007b or later).
remember issue when go upgrade java development environment java 7 or java 8.
Comments
Post a Comment