Java 如何以编程方式获取运行时使用的JNA版本?
我试图在运行时打印日志中使用的JNA版本Java 如何以编程方式获取运行时使用的JNA版本?,java,jna,Java,Jna,我试图在运行时打印日志中使用的JNA版本 如何在运行时通过代码获取JNA的版本?当前JNA版本在构建时写入相应命名接口中的常量版本。该接口是包私有的,但由类实现,使常量可从本机公开使用。(林特可能会抱怨。)所以你可以简单地做: import com.sun.jna.Native; public class Test { public static void main(String[] args) { System.out.println("JNA Versio
如何在运行时通过代码获取JNA的版本?当前JNA版本在构建时写入相应命名接口中的常量
版本。该接口是包私有的,但由类实现,使常量可从本机
公开使用。(林特可能会抱怨。)所以你可以简单地做:
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
类还公开了一个boolean
方法,您可以使用该方法检查JNA是否至少是指定的版本或更高版本。不幸的是,版本和版本\u Native不可见,因此您的答案不起作用。@CCCCoder3我的答案起作用。我只是执行了它。你试过了吗?您是否注意到我指定了Native
类,该类在Version
接口中公开包私有常量?这到底是怎么“不起作用”的呢?您是否遇到编译器错误/运行时错误?空结果?默认情况下,接口中的常量为public
。无法使用Version.Version
的原因是接口本身是包私有的。但是,Native
类是public
,因此它的iherited(public
)字段VERSION
可见。它不适用于我,可能我使用的版本与您不同?但是如果你看到版本的文档,你会看到它是包公共的。当本机实现版本时,它将无法更改这一点。我不知道你为什么认为它神奇地公开了。这将真正帮助我理解你所说的“不适合你”的意思。你到底看到了什么错误?