使用 gradle 和 nd4j 构建时出现问题

Problems building using gradle with nd4j

我正在尝试使用 nd4j 构建模块。
它与 Maven 一起构建良好,但与 gradle.
不兼容 我对 pom 进行了自动转换,我手动添加了 javacpp 依赖项和
它构建但测试失败并显示 link 错误 no jniopenblas_nolapack in java.library.path
我做了很多网络搜索无济于事。
这是我的 dependencies 部分:

dependencies {
implementation("org.bytedeco:openblas:0.3.17-1.5.6")
implementation("org.bytedeco:javacpp:1.5.6")
implementation("org.nd4j:nd4j-native:1.0.0-M1.1")
}

(我删除了与此无关的部门)
实际上,我有点无能为力。

在评论中,我希望对我们的文档提出评论以帮助改进网站。我们明确地涵盖了这种情况。我将在下面对其进行总结,然后用 link 发表评论。如果您发现任何遗漏,请帮助我们改进未来的网站。

Nd4j 使用依赖分类器的 javacpp 来确定如何包含本机二进制文件。它的工作方式是将核心 类 放在一个独立的 library/artifactId (nd4j-native) 中,并且它需要一个伴随的分类器依赖项来配合它。这将是一个具有相同名称和版本的工件 ID 以及一个额外的分类器。这通常是您平台的 OS 和体系结构名称。这可能是 linux-x86_64(linux 在 64 位英特尔上)或 android-arm64(android 在 64 位 ARM 设备上)

这些通常还具有伴随的依赖项,例如 openblas(我们也使用 javacpp 绑定)使我们能够访问快速的第 3 方数学例程。

考虑到这一点,像这样的依赖块通常就是您正在寻找的:

dependencies {
    compile "org.nd4j:nd4j-native:1.0.0-M1.1"
    // Use windows-x86_64 or linux-x86_64 if you are not on macos
    compile "org.nd4j:nd4j-native:1.0.0-M1.1:macosx-x86_64"
    compile "org.bytedeco:openblas:0.3.17-1.5.6:macosx-x86_64" 
    compile "org.bytedeco:openblas:0.3.17-1.5.6" 
}

您也可以按照 Sam 之前描述的方式进行操作,并使用 -platform 依赖项。这些将更容易使用,并且实际上是我们在文档站点上默认拥有的内容。这将只是:

dependencies {
    compile "org.nd4j:nd4j-native-platform:1.0.0-M1.1"
 
}

网站上还有关于此的更多文档,因此为简单起见,我将尽量省略所有这些文档。如果您需要跟进评论,请告诉我或提交另一个问题。