H5Screate_simple 抛出异常:暗淡等级无效

H5Screate_simple throws exception: dims rank is invalid

我刚开始尝试使用 HDF5,看看是否可以在新项目中使用它。我在调用 H5Screate_simple 时收到以下异常:dims 等级无效。

我在 OS X 上使用 Scala 和 Maven 在 Eclipse 中进行开发。我正在使用这个 example 来构建我的测试。这是失败的片段:

def failTest() {
    val rank: Int = 2
    val dimSizes = Array[Long](1, 1)
    val maxDimSizes = Array[Long](1, 1)

    val dataSpaceID = H5.H5Screate_simple(rank, dimSizes, maxDimSizes)
}

搜索错误消息我找到了抛出异常的代码 here,见第 81 行。这表明 dimSizes 数组的长度与 rank 的值不匹配,但在上面的代码片段中两者显然都是 2。我想知道这是否是 Scala 中 Array 对象的问题(尽管我以前从未遇到过将数组传递给 java 函数的问题)。所以我在 Java ...

中写了一个测试片段
public static void failTest() throws Exception {
    int rank = 2;
    long[] dims = { 1, 1 };
    long[] mdims = { 1, 1 };

    long dataSpaceID = H5.H5Screate_simple(rank, dims, mdims);

}

我遇到了同样的异常。一切看起来都很简单,但我看不出有任何问题。有人可以帮忙吗?

问题是由于数据包不足造成的。我设置 pom.xml 从 Maven Central 获取包,但那里发布的最新版本是 2010 年的 2.6.1。最新版本是 3.2.1。出于某种原因,他们没有在 Maven Central 维护它。我从 here 下载了最新的。

我在我的 Maven 存储库中手动安装了 jar:

mvn install:install-file -Dfile=jarhdf5-3.2.1.jar -DgroupId=org.hdfgroup -DartifactId=hdf-java -Dversion=3.2.1 -Dpackaging=jar

然后用

更新了我的pom.xml
    <dependency>
        <groupId>org.hdfgroup</groupId>
        <artifactId>hdf-java</artifactId>
        <version>3.2.1</version>
    </dependency>

从 hdfgroup 下载被描述为一个安装程序,但它似乎并没有真正安装任何东西。所以我还必须手动安装本机库:

ln -sf /<path_to_package>/HDFJAVA/3.2.1/lib/libjhdf.3.2.1.dylib /usr/local/lib/libjhdf.3.2.1.dylib
ln -sf /<path_to_package>/HDFJAVA/3.2.1/lib/libjhdf.3.2.1.dylib /usr/local/lib/libjhdf5.dylib