gpt4 book ai didi

Java 库路径 - Mac 上的 UnsatisfiedLinkError

转载 作者:行者123 更新时间:2023-12-02 11:11:49 47 4
gpt4 key购买 nike

我知道,这不是第一个库路径问题,但我真的不知道问题是什么。我需要一个KernelWrapper我的项目的库,并将其包含在 Linux 上完全没有问题。但是,当我尝试将其包含在 Mac 中(通过终端或直接在 IDE 中)时,我总是得到

Exception in thread "main" java.lang.UnsatisfiedLinkError: no KernelWrapper in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at cTools.KernelWrapper.<clinit>(KernelWrapper.java:6)
at shell.main(shell.java:18)

我使用

打印出了库路径
System.out.println(System.getProperty("java.library.path"));

它告诉我该文件夹的路径是正确的并且包含在内。但是,KernelWrapper 类无法正常工作。但它与 Unix 上包含的文件夹完全相同。我缺少什么?

最佳答案

当应用程序尝试加载 native 库(例如 Linux 中的 .so、Windows 中的 .dll 或 Mac 中的 .dylib(在您的情况下))并且该库不存在时,会引发 UnsatisfiedLinkError。具体来说,为了找到所需的 native 库,JVM 会查找 PATH 环境变量和 java.library.path 系统属性。

首先,您必须验证 System.loadLibrary 方法中传递的参数是否正确,并且该库确实存在。请注意,不需要扩展库。因此,如果您的库名为 SampleLibrary.dll,则必须将 SampleLibrary 值作为参数传递。此外,如果您的应用程序已经加载了该库,并且应用程序尝试再次加载它,则 JVM 将抛出 UnsatisfiedLinkError。此外,您还必须验证 native 库是否存在于 java.library.path 或应用程序的 PATH 环境库中。如果仍然找不到该库,请尝试提供 System.loadLibrary 方法的绝对路径。为了执行您的应用程序,请使用 -Djava.library.path 参数来显式指定 native 库。例如,使用终端(Linux 或 Mac)或命令提示符(Windows),通过发出以下命令来执行您的应用程序:

java -Djava.library.path= "<path_of_your_application>" –jar <ApplicationJAR.jar>

关于Java 库路径 - Mac 上的 UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50565874/

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