Matlab HDF5和JHDF5库不匹配崩溃?

时间:2014-11-20 13:20:37

标签: java matlab hdf5

我在Linux Ubuntu 12.04上使用Matlab版本R2013b并且有一个Matlab应用程序,它取决于来自Java HDF5HDFGROUP。我的问题是由两个文件jhdf5.jarlibjhdf5.so组成的JHDF5包装器似乎与Matlab中集成的HDF5库不兼容。

我的环境设置如下,即确保Matlab中的JAVA版本:

$ env | grep JAVA
MATLAB_JAVA=/opt/dev/java/1.7.0_55/jre
JAVA_HOME=/opt/dev/java/1.7.0_55
JAVA_VERSION=1.7.0_55

我从一个目录启动Matlab,我在其中设置了以下两个文件来设置JHDF5库:

java.opts

-XX:MaxPermSize=256m
-Xmx4091m
-Xms2048m
-Dncsa.hdf.hdf5lib.H5.hdf5lib=/opt/dev/jhdf5/2.7/lib/linux/libjhdf5.so

javaclasspath.txt

/opt/dev/jhdf5/2.7/lib/jhdf5.jar
...

从Matlab内部我得到以下内容(意思是我有HDF5版本1.8.6以及其他所有内容,即根据需要设置JRE和JHDF5):

>> [maj,min,relnum] = H5.get_libversion
maj =
     1
min =
     8
relnum =
     6

>> java.lang.System.getProperty('ncsa.hdf.hdf5lib.H5.hdf5lib')
ans =
/opt/dev/jhdf5/2.7/lib/linux/libjhdf5.so

>> version -java
ans =
Java 1.7.0_55-b13 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

但是当我尝试运行一个简单的命令时,例如创建ncsa.hdf.hdf5lib.H5的实例或者只是从Matlab命令行访问它,Matlab崩溃

>> ncsa.hdf.hdf5lib.H5 % crashes Matlab

我有时会在控制台中看到以下错误:

HDF5-DIAG: Error detected in HDF5 (1.8.6) thread 0:
    #000: H5Edeprec.c line 186 in H5Eget_minor(): not a error message ID
    major: Invalid arguments to routine
    minor: Inappropriate type

总结一下,我有以下版本:

  • Java JDK 1.7.0_55
  • Matlab R2013b
  • HDF5本机库版本1.8.6
  • JHDF5包装库2.7版,与HDF5原生1.8.6兼容。请参阅此处的兼容性说明RELEASE.txt

0 个答案:

没有答案