【问题标题】:How do I set up Logitech's LED Illumination SDK with Java?如何使用 Java 设置 Logitech 的 LED 照明 SDK?
【发布时间】:2021-11-03 06:05:51
【问题描述】:

当使用 Logitech 的 LED SDK 制作一个简单的测试程序并运行它时,我收到 UnsatisfiedLinkError 消息:

C:\Users\cwa38\AppData\Local\Temp\LogitechLedJNI.dll4587977834410494064: Can't find dependent libraries

到目前为止我做了什么:

  1. 我从https://www.logitechg.com/en-us/innovation/developer-lab.html下载了SDK
  2. 我提取了它
  3. 我在 NetBeans 中创建了一个新的 Java 项目
  4. 我将 logiled.jar 文件作为依赖项添加到我的新项目中
  5. 我新建了一个类,并从文档中复制了简单的测试程序(代码如下)
  6. 我点击了“运行”,得到了上面描述的 UnsatisfiedLinkError

我看到 SDK 下载附带了一些 .dll 文件和一个 .lib 文件,但我不知道如何处理这些文件。随附的文档完全没有提及它们。

我做错了什么?

这是我的代码:

import com.logitech.gaming.LogiLED;

public class Main {
    public static void main(String[] args) {
        LogiLED.LogiLedInit();
        LogiLED.LogiLedSetLighting(100, 0, 0);
        LogiLED.LogiLedShutdown();
    }
}

这里是罗技的完整文档(是的,确实这么短):

以下步骤展示了如何使 Logitech SDK 与 Java 程序一起工作。请根据您的游戏调整这些步骤以使其正常工作。

步骤

  1. 将 SDK 的 Lib\logiled.jar 复制到您的项目目录中。
  2. 配置项目的 Java 构建路径以包含 logiled.jar。
  3. 在 Java 代码中调用 JNI 包装器中的函数,如下所示:
    import com.logitech.gaming.LogiLED;

    LogiLED.LogiLedInit();
    LogiLED.LogiLedSetLighting(red,blue,green);
    LogiLED.LogiLedShutdown();
  1. 编译并运行您的程序。

我得到的错误的完整堆栈跟踪如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\cwa38\AppData\Local\Temp\LogitechLedJNI.dll4587977834410494064: Can't find dependent libraries
    at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
    at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:384)
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:228)
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:170)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
    at java.base/java.lang.Runtime.load0(Runtime.java:755)
    at java.base/java.lang.System.load(System.java:1953)
    at com.logitech.gaming.LogiLED.<clinit>(LogiLED.java:205)
    at javaapplication1.JavaApplication1.main(JavaApplication1.java:20)
C:\Users\cwa38\AppData\Local\NetBeans\Cache\12.4\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\cwa38\AppData\Local\NetBeans\Cache\12.4\executor-snippets\run.xml:68: Java returned: 1

【问题讨论】:

  • 你应该把那些 dll 和 lib 文件和那个 jar 放在同一个位置,如果你用复制器创建一个 github repo 会更容易解决这个问题。
  • @özkanpakdil 感谢您的回复。我尝试将 dll 和 lib 文件放在与 jar 相同的文件夹中,但仍然收到相同的错误消息。 Here 是我按照问题中描述的确切步骤操作时留下的项目目录。
  • 你能检查一下stackoverflow.com/a/12132922/175554我认为你不能再安装32位但值得检查,另一种方法stackoverflow.com/a/67369117/175554你可能有一些错误的dll。最后但并非最不重要的一点是,您是否有一些可能会影响 jvm 的病毒扫描程序,请尝试禁用并测试。
  • 本地库 (DLL) 名称和位置对于 LGS 和 GHub 是不同的。这可能是个问题。
  • @EgorSkriptunoff 到目前为止,我一直在使用 GHub。我会尝试使用 LGS 看看是否有任何改变。

标签: java logitech logitech-led-illumination-sdk


【解决方案1】:

我试图在我的 netbeans 中运行你的项目,但失败了

 project com.cwa380:KeyColors:jar:1.0: logitech:gaming:jar:9.00 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced

然后我从ant创建了一个新项目,只要你使用这个不在maven存储库中的logitech jar,你不需要maven项目。

然后我添加了 logiled.jar,如下图所示

当我运行代码时,我没有任何异常。下面输出

当我尝试使用代码完成时,netbeans 很好地列出了这些功能。

这是我的工具版本

Product Version: Apache NetBeans IDE 12.4
Java: 17; OpenJDK 64-Bit Server VM 17+35-2724
Runtime: OpenJDK Runtime Environment 17+35-2724
System: Windows 10 version 10.0 running on amd64; Cp1252; en_US (nb)
User directory: C:\Users\ozkan\AppData\Roaming\NetBeans\12.4
Cache directory: C:\Users\ozkan\AppData\Local\NetBeans\Cache\12.4

在github找到https://github.com/larsgrefer/logi-led你可以联系Lars(@larsgrefer),看来他知道怎么用罗技SDK了。

这是我的项目https://github.com/ozkanpakdil/spring-examples/tree/master/JavaApplication1 确保您已在库的正确路径中添加了 logiled jar

【讨论】:

  • 我遵循了这些确切的步骤,但最终还是得到了问题中描述的完全相同的 UnsatisfiedLinkError。我留下的 Netbeans 项目是 here
  • 可能我们没有使用相同的版本,我在答案中添加了 jdk netbeans 版本。
  • 我一直在 Windows 10 上使用带有 JDK 16 的 Netbeans 12.4。我刚刚更新到 JDK 17,所以我们现在使用完全相同的设置,但我仍然收到错误。
  • 我在 repo 中添加了我的 netbeans 项目,如果您仍然收到 UnsatisfiedLinkError,表示您没有正确路径中的 logiled jar,您可以更新您的问题并添加完整的堆栈跟踪吗?
  • 我刚刚下载了你的 repo 并运行它,我仍然得到错误。我把完整的堆栈跟踪放在我的问题中。
猜你喜欢
  • 2016-04-06
  • 2016-10-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2021-08-23
  • 2018-08-16
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多