作者:手浪用户2602922465 | 来源:互联网 | 2023-05-18 17:29
无法通过快速谷歌搜索"java未实现的本机方法"和问题标题找到这个.有几个消息来源说你必须提供一个实现,然后他们继续调用他们实现的功能,所以他们需要一个单独的实现是合乎逻辑的.
我的问题有一个略有不同的背景.
我有一个Java库,我想在Windows,Unix和Android上使用它.我有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()
在平台A,B和C上调用,并打算b()
只在平台C上调用,我是否必须b()
在平台A和B上提供实现?
1> Pimgd..:
不需要提供实现.您甚至不需要为未实现的方法编译头文件.
但是,正常情况下,java.lang.UnsatisfiedLinkError
如果您调用该函数,则会得到一个.