无法通过快速谷歌搜索找到这个" 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()
提供实现?
答案 0 :(得分:5)
不需要提供实现。您甚至不需要为未实现的方法编译头文件。
但是,正常情况下,如果您调用该函数,则会获得java.lang.UnsatisfiedLinkError
。