我尝试调用现有的本机方法,但得到UnsatisfiedLinkError,并且不明白为什么我从JDK复制现有代码并且没有编写我自己的C函数。
我从JDK套接字Java源代码中复制了一些代码。在Ubuntu上运行。
git fetch
}
运行此代码会导致:
public class Sokket {
static {
System.loadLibrary ("net");
}
static {
initProto ();
}
// rest ommited for brevity
我尝试了其他原生方法,但同样的错误,我更改了" net"为了测试是否可以找到该库,然后我收到一个错误,即在Exception in thread "main" java.lang.UnsatisfiedLinkError:
be.good.Sokket.initProto()V
at be.good.Sokket.initProto(Native Method)
at be.good.Sokket.<clinit>(Sokket.java:12)
中找不到该lib,我更改了&#34; initProto&#34;测试是否可以找到该方法然后我得到相同的错误。所以它在我看来&#34; libnet.so&#34;在JDK lib目录中没有initProto(),也没有java.library.path
。
当我使用createSocket()
运行时,我确实看到很多lib已加载但没有引用&#34; net&#34;或&#34; initProto&#34;。
如何从我自己的代码中调用现有的本机方法?