我正在尝试使用nd4j构建一个模块。
它与maven一起构建得很好,但在gradle中却不是这样。
我对pom进行了自动转换,手动添加了javacpp依赖项,
它构建了链接错误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")
}(我已经删除了与此无关的deps )
实际上,我有点傻了。
发布于 2022-02-02 22:49:45
在评论中,我将感谢对我们的文档的评论,以帮助改进网站。我们明确地介绍了这个场景。我将在下面总结一下,然后用一个链接进行评论。如果您发现有任何遗漏,请帮助我们改进网站的未来。
Nd4j使用javacpp,它依赖于分类器来确定如何包含本机二进制文件。它的工作方式是将核心类放入一个独立的库/artifactId(nd4j-本机)中,它需要一个伴随的分类器依赖项。这将是一个具有相同名称和版本的工件id,外加一个额外的分类器。这通常是您的平台的操作系统和架构名称。这可能是linux-x86_64 ( 64位英特尔上的linux)或android-arm64 ( 64位ARM设备上的android)。
它们通常还有伴随的依赖项,例如openblas (我们也使用javacpp绑定)来使我们能够访问快速的第三方数学例程。
考虑到这一点,通常需要这样的依赖块:
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依赖项。它们将更易于使用,并且是我们在docs站点上默认拥有的内容。这样的话,就是:
dependencies {
compile "org.nd4j:nd4j-native-platform:1.0.0-M1.1"
}在这个站点上还有更多的文档,所以为了简单起见,我将尝试忽略所有这些。如果您需要后续的意见,请告诉我或提交另一个问题。
https://stackoverflow.com/questions/70958433
复制相似问题