无法找到适用于操作系统的Tensorflow本机库

时间:2018-03-05 20:39:27

标签: java maven tensorflow jar

我正在尝试导出我用Java编写的图像分类器程序,使用Tensorflow(通过Maven添加)制作成具有所有依赖项的runnable jar文件(当然包括Tensorflow),以便它可以在外部计算机上运行。

一旦jar完成,我尝试将它运行到多台Windows 7(或更新的)计算机上:其中一半,程序运行正常,但另一半(包括我的),它不是:确实,由于GUI上的按钮触发了图像检测事件,命令行上会出现错误:

Exception in thread "Awt-EventQueue-0" java.lang.UnsatisfiedLinkError: Cannot find Tensorflow native library for OS: windows, architecture: x86

此外,当我再次点击按钮时,会抛出一个新错误:

Exception in thread "Awt-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class org.tensorflow.Tensor

我测试jar的每台计算机都至少安装了最新的JRE版本。罐子工作的一些电脑甚至没有以任何方式安装Python和/或Tensorflow,例如我的所有设备都已正确安装。

这是我的pom.xml:https://hastebin.com/oxidunasaw.xml

你能帮我弄清问题是什么,并给我解决方案,以使jar在每台电脑上工作?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

TensorFlow Java发行版包含(平台/体系结构相关的)本机库。有关slides链接的TensorFlow Java samples扬声器节点的更多信息。

错误消息表明由于某种原因无法找到本机库,或者org.tensorflow:libtensorflow_jni Maven工件中打包的库与您正在运行的操作系统版本/体系结构不兼容。这可能由于各种原因而发生,例如libc共享库的不兼容版本。

通过运行带有-Dorg.tensorflow.NativeLibrary.DEBUG=1的JVM可以获得更多调试信息,这将打印出有关包装故障的诊断信息。

希望有所帮助。

P.S。我还注意到你正在使用Java API的1.1.0-rc2版本,这已经快一年了。您可能想要转移到更新的版本。