【发布时间】:2014-09-26 07:27:03
【问题描述】:
我必须使用 Java JNA 来链接 C 库。这个库有一个 Windows 实现和一个 Linux 实现。对于单个方法,它们与其他方法不同,因为该方法仅由 Windows 版本实现。
MyJnaInterface INSTANCE = (MyJnaInterface) Native.loadLibrary("MyLibrary",
MyJnaInterface.class);
我想要我的 Java 应用程序的一个版本,这可能有一个接口和 2 个实现,一个用于 windows 操作系统,一个用于 linux 操作系统,显然 linux 实现将有一个空方法。
public interface MyJnaInterface
public class MyJnaWinImpl implements MyJnaInterface
public class MyJnaLinuxImpl implements MyJnaInterface
这在 windows 中有效,在服务启动时的 linux 操作系统中 JNA 尝试在 windows 类中也找到它的本机方法(如果这个类在运行时没有使用),因此它会抛出 UnsatifiedLinkError。 如何解决这个僵局? 我真的无法改变原生库(它会很简单......)
【问题讨论】:
-
您可以在本机端进行所需的调整...这很容易使用像JavaCPP 这样的工具而不是JNA :)
标签: java jna unsatisfiedlinkerror