【发布时间】:2021-11-03 06:05:51
【问题描述】:
当使用 Logitech 的 LED SDK 制作一个简单的测试程序并运行它时,我收到 UnsatisfiedLinkError 消息:
C:\Users\cwa38\AppData\Local\Temp\LogitechLedJNI.dll4587977834410494064: Can't find dependent libraries
到目前为止我做了什么:
- 我从https://www.logitechg.com/en-us/innovation/developer-lab.html下载了SDK
- 我提取了它
- 我在 NetBeans 中创建了一个新的 Java 项目
- 我将 logiled.jar 文件作为依赖项添加到我的新项目中
- 我新建了一个类,并从文档中复制了简单的测试程序(代码如下)
- 我点击了“运行”,得到了上面描述的 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 程序一起工作。请根据您的游戏调整这些步骤以使其正常工作。
步骤
- 将 SDK 的 Lib\logiled.jar 复制到您的项目目录中。
- 配置项目的 Java 构建路径以包含 logiled.jar。
- 在 Java 代码中调用 JNI 包装器中的函数,如下所示:
import com.logitech.gaming.LogiLED; LogiLED.LogiLedInit(); LogiLED.LogiLedSetLighting(red,blue,green); LogiLED.LogiLedShutdown();
- 编译并运行您的程序。
我得到的错误的完整堆栈跟踪如下:
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