我正在尝试导出我用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版本。 jar工作的一些电脑甚至没有以任何方式安装Python和/或Tensorflow,例如我的所有设备都已正确安装。
这是我的pom.xml:https://hastebin.com/oxidunasaw.xml
你能帮我弄清问题是什么,并给我解决方案,让jar在每台电脑上工作?
谢谢你的帮助。
TensorFlow Java发行版包括(平台/体系结构相关的)本机库。更多信息在slides链接的TensorFlow Java samples的扬声器节点中。
该错误消息表明,由于某种原因,无法找到本机库,或者org.tensorflow:libtensorflow_jni
Maven工件中打包的库与您正在运行的操作系统版本/体系结构不兼容。这可能由于各种原因而发生,例如libc共享库的不兼容版本。
您可以通过使用-Dorg.tensorflow.NativeLibrary.DEBUG=1
运行JVM来获取更多调试信息,qazxswpoi将打印出有关包装故障的诊断信息。
希望有所帮助。
附:我还注意到你正在使用Java API的1.1.0-rc2版本,这已经快一年了。您可能想要转移到更新的版本。