gpt4 book ai didi

java - ColdFusion 2016 调用 Java TensorFlow API 无法初始化类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:44 25 4
gpt4 key购买 nike

我正在尝试从 Windows 10 家庭版上的 ColdFusion 2016 开发人员版调用 TensorFlow Java API。

我从 TensorFlow 中得到启发 Readme.md除了 jar 之外,它还使用特定于平台的 JNI dll,所以我这样设置我的测试:
<cfscript>
CreateObject("java","java.lang.System").load("C:\\absolutepath\\tensorflow_jni.dll");
variables.tensorflow = CreateObject("Java","org.tensorflow.TensorFlow");
WriteDump(variables.tensorflow);
WriteOutput("I'm running TensorFlow version: " & variables.tensorflow.version());
</cfscript>

当我看到对象的 WriteDump 时,我认为这将是小菜一碟:enter image description here

但是对 version() 的调用只会让浏览器旋转。

应用程序日志显示以下错误: Could not initialize class org.tensorflow.TensorFlow The specific sequence of files included or processed is: C:\ColdFusionBuilder2016\ColdFusion\cfusion\wwwroot\CF_TensorFlow\index.cfm, line: 5

JNI 似乎正在加载...如果没有加载,错误消息非常明确“无法找到适用于操作系统的 TensorFlow native 库:windows...”

我现在不太确定该怎么做。我需要对 Java 源代码做些什么才能使其与 CF 很好地兼容吗?

最佳答案

正如您可能想到的那样,库首先搜索 DLL 的标准位置。因此,将路径或文件添加到这些位置之一(然后重新启动 CF)肯定会起作用:

  • 将DLL路径添加到java.library.path
  • 将DLL文件复制到jre\bin目录

查看the source and comments ,显然 DLL 也可以 TensorFlow jar 本身中。确切的路径是特定于 o/s 的:

private static String makeResourceName() {
return "org/tensorflow/native/"
+ String.format("%s-%s/", os(), architecture())
+ System.mapLibraryName(LIBNAME);
}

因此,不要使用 System.load(),而是打开 jar 并将 DLL 复制到适当的文件夹中。对于 64 位 Windows,预期路径是 org/tensorflow/native/windows-x86_64/tensorflow_jni.dll

libtensorflow-1.1.0-rc2-with-dll.jar 

|-- META-INF
|-- org
|-- tensorflow
|-- TensorFlow.class
|-- ...
|-- native
|-- windows-x86_64
|-- tensorflow_jni.dll

关于java - ColdFusion 2016 调用 Java TensorFlow API 无法初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com