【问题标题】:Leap Motion Java SDK, java.library.pathLeap Motion Java SDK,java.library.path
【发布时间】:2013-11-30 18:48:24
【问题描述】:

我正在使用 LeapJava.jar 编写一个简单的 JDK 程序来与 Leap 交互。我大致遵循了这篇文章:Developing for the Leap Motion controller in Scala,理论上这一切都非常简单。但是,当我尝试运行该程序时,它会在尝试连接到 Leap 设备时以 RuntimeException 失败:

Native code library failed to load. 
java.lang.UnsatisfiedLinkError: no LeapJava in java.library.path
java.lang.RuntimeException: Nonzero exit code: 1
  at scala.sys.package$.error(package.scala:27)

我已按照the Leap documentation 中的步骤进行操作,但由于我使用的是 Ubuntu(和sbt),因此没有与这种情况直接相关的明确说明。我为 java.library.path 参数尝试了各种不同的参数:

  • 指向项目中的 ./lib 目录(其中包含 LeapJava.jar)
  • 使用 Leap SDK 的 lib 目录
  • Leap SDK 的 lib 目录的绝对路径
  • LeapSDK 的 lib 目录中的 x86 目录
  • 将 LeapJava.jar 文件符号链接到 x86 目录并使用它

我在 IntelliJ(如上面链接的 Leap 文档中描述的设置)或从命令行运行它时遇到了同样的问题。例如

sbt -Djava.library.path=.:/<path to LeapSDK>/lib run

我已将 LeapJava.jar 添加到 sbt 的类路径中(它位于 lib 目录中),项目编译正常。

任何建议(尤其是我在 Linux 上,文档很少)都会受到欢迎。

【问题讨论】:

  • 需要注意的一点:如果本机库是 32 位的,则需要使用 32 位的 JVM,如果是 64 位,则需要使用64 位 JVM。 32 位 JVM 无法加载 64 位本机库,反之亦然。

标签: scala leap-motion


【解决方案1】:

复制项目(您当前的工作目录)文件夹中的 .dll 文件,因为它会在该特定文件夹中查找本机库。

【讨论】:

  • 它对我有用。我将所有文件从 sdk/lib/x64 复制到我的 netbeans 项目的根文件夹中。
【解决方案2】:

来自 Leap Motion Linux 包中的自述文件:

问。 ...Sample.java 编译,但是当 尝试运行,我收到有关无法加载的错误 libLeapJava.so

A. Java 似乎无法搜索原生 没有一些指导的图书馆。尝试: LD_LIBRARY_PATH=。 java -classpath .:LeapJava.jar 示例

看起来它假设 jar 文件和本机库与您的应用程序位于同一文件夹中。

【讨论】:

    【解决方案3】:

    通过执行以下操作,我在 Ubuntu 上的 eclipse 中得到了滚动。

    1)在 Package Explorer 区域中选择您的项目并右键单击它。

    2) 选择 Build Path → Configure Build Path... 选项。

    3) 在出现的窗口中,选择库选项卡。

    4) 然后,展开 JRE System library 选项并选择 Native library location。

    5) 点击右侧面板的编辑按钮

    6) 点击外部文件夹。

    7) 导航到您下载的 sdk .../LeapSDK/lib/x64

    如果您使用的是 32 位系统,请使用 x86

    您现在应该可以正确使用 LeapJava.jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多