我有一个班子,要求土著职能从其CMOS获取有关系统的信息。 班级有一个固定的初始化区,装上载有土著功能的图书馆。
package lib.sysid;
public class SysId
{
private static native int getSysIdNative();
private static final String SYS_ID_PATH = "libsysid.so";
static
{
System.load(SYS_ID_PATH);
}
public static int getSysIdFromCMOS()
{
int returnValue = getSysIdNative();
}
}
根据我的测试,该方法首次使用该方法,但如果我稍后再次使用该方法,静态初始化装置也运行,造成一个不满意的LinkError:
java.lang.UnsatisfiedLinkError: Native Library libsysid.so already loaded in another classloader
如果已经运行,我如何避免执行<代码>System.load(方法>的静态初始化装置?
或者,如果图书馆已经装上<代码>System.load(方法>之前,我是否可尝试“卸载”图书馆?
EDIT:Srangely 够了,如果我对System.load(
)与一个试捕组相联,我仍然拿到一个没有卫星信封的LinkError,但这次是实际打电话到getSysdNative(
)。 我看到的错误如下:
lib.sysid.SysId.getSysIdNative()I
什么是“一”? 我曾试图对这部法典进行夸张,以了解电文在什么地方出现,但迄今为止,我还没有成功。