我正在尝试导出我用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在每台电脑上工作?
感谢您的帮助。
答案 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版本,这已经快一年了。您可能想要转移到更新的版本。