【发布时间】:2018-10-07 18:51:07
【问题描述】:
我正在尝试在 Intellij IDEA 的 Kotlin 项目中使用 Nd4j。在 Project Structure -> Libraries 中,我使用“From Maven”命令添加了以下库。
org.deeplearning4j:deeplearning4j-core:1.0.0-beta
org.nd4j:nd4j-native-platform:1.0.0-beta
org.datavec:datavec-api:1.0.0-beta
使用这些库我可以编译我的项目,但是当我运行它时会失败并出现异常。
Caused by: java.lang.RuntimeException: ND4J is probably missing dependencies. For more information, please refer to: http://nd4j.org/getstarted.html
at org.nd4j.nativeblas.NativeOpsHolder.<init>(NativeOpsHolder.java:51)
at org.nd4j.nativeblas.NativeOpsHolder.<clinit>(NativeOpsHolder.java:19)
... 10 more
Caused by: java.lang.UnsatisfiedLinkError: no jnind4jcpu in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1220)
at org.bytedeco.javacpp.Loader.load(Loader.java:980)
at org.bytedeco.javacpp.Loader.load(Loader.java:879)
at org.nd4j.nativeblas.Nd4jCpu.<clinit>(Nd4jCpu.java:10)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.bytedeco.javacpp.Loader.load(Loader.java:938)
at org.bytedeco.javacpp.Loader.load(Loader.java:879)
at org.nd4j.nativeblas.Nd4jCpu$NativeOps.<clinit>(Nd4jCpu.java:1310)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.nd4j.nativeblas.NativeOpsHolder.<init>(NativeOpsHolder.java:29)
... 11 more
Caused by: java.lang.UnsatisfiedLinkError: no nd4jcpu in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1220)
at org.bytedeco.javacpp.Loader.load(Loader.java:965)
... 21 more
查看项目文件夹,我看到 IDEA 已经为 nd4j-native-platform 下载了很多 jar 文件,但是没有任何 JNI 库的迹象。我还需要做什么?
【问题讨论】:
-
你是如何运行程序的?
-
在 IDEA 中使用“运行”命令。我尝试编辑运行配置以将包含所有 jar 的目录添加到 java.library.path,但这没有帮助。
-
改为作为 gradle 任务运行。我自己在 IntelliJ 运行配置中遇到了问题,没有找到 Gradle 依赖项。不知道为什么,可能是 IntelliJ 中的错误,或者设计使然,但这无关紧要。你可能需要添加一个自定义任务来运行它,但是在 SO 上也有帖子涵盖它
-
你能解释一下吗?我没有使用过 Gradle。我只有一个普通的 IDEA 项目,使用“新建项目”命令创建。此外,这些库被定义为 Maven 依赖项,而不是 Gradle 依赖项。
-
对不起,我的错。忽略这一点,出于某种原因,我认为您使用了 Gradle。 (即使它被标记为 maven,不知道为什么我错过了)
标签: maven intellij-idea kotlin deeplearning4j nd4j