是否为所需的所有本机方法提供了实现?

时间:2015-03-10 08:41:33

标签: java android java-native-interface

无法通过快速谷歌搜索找到这个" java未实现的原生方法"和问题标题。有几个消息来源说你必须提供一个实现,然后他们继续调用他们已经实现的功能,所以他们需要一个单独的实现是合乎逻辑的。

我的问题背景略有不同。

我想在Windows,Unix和Android上使用Java库。 我有JNI用于实现本机库。对于android,这个库带有专门的日志记录。此功能仅适用于android,而不适用于windows / unix。我是否可以声明public static native void log()函数而不提供实现,只要我不调用日志函数?

这将允许我为windows,unix和android提供相同的库。无论如何,没有人会在windows / unix上调用android日志功能。


TL; DR:我有一个包含方法public static native void a()public static native void b()的类。如果我打算在平台A,B和C上调用a(),并打算仅在平台C上调用b(),我是否必须在平台A和B上为b()提供实现?

1 个答案:

答案 0 :(得分:5)

不需要提供实现。您甚至不需要为未实现的方法编译头文件。

但是,正常情况下,如果您调用该函数,则会获得java.lang.UnsatisfiedLinkError