当前位置: 首页 > 面试题库 >

防止Java多次加载库

百里飞捷
2023-03-14
问题内容

我有几个使用相同的JNI库的类,称为“ jni”。在每个此类中,我在该类的静态初始值设定项中都有一个System.loadLibrary()调用:

Class class1 {
    static{
        System.loadLibrary("jni");
    }
    ...
}

Class class2 {
    static{
        System.loadLibrary("jni");
    }
    ...
}

唯一的问题是,我只希望System.loadLibrary()被调用一次,因为这可能需要一段时间。有没有一种简便的方法来防止同一库的多次加载?


问题答案:

如果已经加载了库,则随后的任何加载相同库的调用都将被忽略。

System.loadLibrary

加载由libname参数指定的系统库。库名称映射到实际系统库的方式取决于系统。

调用System.loadLibrary(name)实际上等效于该调用

 Runtime.getRuntime().loadLibrary(name)

Runtime.loadLibrary

使用指定的库名称加载动态库。从本地文件系统从常规获取库文件的位置加载包含本机代码的文件。此过程的详细信息取决于实现。从库名到特定文件名的映射以系统特定的方式完成。

首先,如果有安全管理器,则将其libLink作为参数调用其checkLink方法。这可能会导致安全异常。

System.loadLibrary(String)方法是调用此方法的常规且方便的方法。如果要在类的实现中使用本机方法,则标准策略是将本机代码放入库文件(称为LibFile)中,然后放置静态初始化器:

 static { System.loadLibrary("LibFile"); }

在类声明中。当类被加载和初始化时,本机方法的必要本机代码实现也将被加载。

如果使用相同的库名称多次调用此方法,则将忽略第二个及后续调用。



 类似资料:
  • 我们有一个Swing应用程序,它通过单击链接从Web应用程序启动。该链接只是一个JNLP url。Apache下的四台服务器上托管着一个jar文件。它们在负载平衡器下。即使同一个jar承载着相同的时间戳,但对JNLP的每个请求或多或少都会下载jar。通常情况下,如果jar中没有变化,JavaWebStart只下载一次,后续的请求可以在不下载的情况下工作。它还检查了哪些信息,以便与服务器版本和jar

  • 问题内容: 当用户单击登录或注册按钮时,我试图阻止多个请求。这是我的代码,但是不起作用。只是第一次工作正常,然后返回false。 有任何想法吗?谢谢! 问题答案: 问题在这里: 不再指向按钮。

  • 问题内容: 有没有办法用javascript / jquery防止图像加载?我正在从带有图像的html列表构建幻灯片。因此,我想收集所有src数据,然后阻止加载图像。因此,稍后当用户真正需要图像时,我便会加载它。 我在Google上找到了一些延迟加载脚本,但找不到阻止图像加载的方式。 提前致谢。 Edit1: 从答案看来,不可能使用javascript来防止图像加载。 这是一个执行延迟加载的脚本。

  • 问题内容: 在我以前的Meteor应用程序中,使用browserify和React,所有功能都可以使用,直到我切换到meteor webpack为止 。 我在Meteor应用程序中使用react-select,效果很好,但是使用browserify可以防止加载多个react副本,从而避免出现此错误: 我的package.json看起来像这样: Webpack中是否有配置,我可以使用外部调用?尚不完

  • 不知道你是否曾经看到过一个论坛或者博客,在一个帖子或者文章后面出现多条重复的记录,这些大多数是因为用户重复递交了留言的表单引起的。由于种种原因,用户经常会重复递交表单。通常这只是鼠标的误操作,如双击了递交按钮,也可能是为了编辑或者再次核对填写过的信息,点击了浏览器的后退按钮,然后又再次点击了递交按钮而不是浏览器的前进按钮。当然,也可能是故意的——比如,在某项在线调查或者博彩活动中重复投票。那我们如

  • 问题内容: 在我的React组件中,我有一个按钮,当单击该按钮时,它会通过AJAX发送一些数据。我只需要第一次发生,即在首次使用后禁用该按钮。 我如何尝试做到这一点: 我认为发生的事情是状态变量没有立即更新,这是React文档所说的预期。 我如何强制按钮被禁用或在单击按钮时立即消失? 问题答案: 您可以做的是单击该按钮后将其禁用,然后将其保留在页面中(不可单击的元素)。 为此,您必须向按钮元素添加