English 中文(简体)
我如何能够避免电传系统两次负荷?
原标题:How can I avoid calling System.load twice?
  • 时间:2010-07-26 20:01:22
  •  标签:
  • java

我有一个班子,要求土著职能从其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

什么是“一”? 我曾试图对这部法典进行夸张,以了解电文在什么地方出现,但迄今为止,我还没有成功。

问题回答

仅是一位猜测,但我认为单项核查和测验仪装载一个类别(并执行其固定初始器)的唯一途径是将其装上不同的舱载体。 因此,这里可能有第二批舱载体,你不知道。 如果另一(一组)舱载荷实际上第二次使用,则适用。

在“real”操作系统下,java -verbose:nal将向您发送电文,以证实这一点。 我不敢肯定你如何在嵌入式系统中核实这一点。 您可以修改getSysId(),以印刷(?)或某种方式放弃提及SysId.class.getClassLoader(

我认为,“碳”是正确的。 静态初始动力器在联合测验仪中可操作两倍的唯一途径是,这一级装上多个舱载体。

lib.sysid.SysId.getSysIdNative(I) 什么是“一”?

这很容易。 <代码>I依据的是按类别档案格式界定的签名类型的内部代表性。 具体来说,I 系指原始int 类型;见Class.getName()。 这符合你的返回类型。

(这些原始类型名称有时在应用空间显示,但这种说法很少混淆。) 你们可以看到的另一个情况是,你在<代码>至String(>上打上了从<代码>继承方法实施的类别。 目标类别。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签