首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Java的ColdFusion 2016调用无法初始化类

对Java的ColdFusion 2016调用无法初始化类
EN

Stack Overflow用户
提问于 2017-04-30 01:35:43
回答 1查看 365关注 0票数 3

我试图调用Windows2016Developer版本的Windows10Home上的TensorFlow Java。

我从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时,我以为这会是小菜一碟:

但是对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本机库:windows.”

我现在不知道该怎么办。我需要对Java源代码做些什么才能让它很好地使用CF吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-30 04:47:18

正如您可能知道的,库首先在标准位置搜索DLL。因此,将路径或文件添加到其中一个位置(然后重新启动CF)肯定会有效:

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

纵观来源和评论,显然DLL也可以绑定在TensorFlow jar本身中。确切的路径是o/s特定的:

代码语言:javascript
复制
private static String makeResourceName() {
    return "org/tensorflow/native/"
        + String.format("%s-%s/", os(), architecture())
        + System.mapLibraryName(LIBNAME);
}

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

代码语言:javascript
复制
libtensorflow-1.1.0-rc2-with-dll.jar 

  |-- META-INF
  |-- org    
      |-- tensorflow    
          |-- TensorFlow.class
          |-- ... 
          |-- native 
              |-- windows-x86_64
                  |-- tensorflow_jni.dll
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43702085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档