如何以编程方式获取在运行时使用的 JNA 版本?

How can I programmatically get the JNA version being used at runtime?

我正在尝试在运行时打印用于我的日志的 JNA 版本。

如何在运行时通过代码获取JNA的版本?

当前的 JNA 版本在构建时写入适当命名的 Version interface. That interface is package private, but is implemented by the Native class 中的常量 VERSION,使常量可从 Native 公开获得。 (Linters 可能会抱怨。)所以你可以简单地做:

import com.sun.jna.Native;

public class Test {
    public static void main(String[] args) {
        System.out.println("JNA Version: " + Native.VERSION);
    }
}

输出:

JNA Version: 5.6.0

您还可以获取本机位的版本,它遵循与整个项目版本不同的编号方案(随着不更改已编译本机部分的新映射而增加),但可能与一些上下文:

System.out.println("JNA Native Version: " + Native.VERSION_NATIVE);

Native class 还公开了一个 boolean isCompatibleVersion() 方法,您可以使用它来检查 JNA 是否至少为指定版本或更高版本。