java中library.path和LD_LIBRARY_PATH有什么区别

  介绍

这期内容当中小编将会给大家带来有关的java库中。路径和LD_LIBRARY_PATH有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

java基本数据类型有哪些

java的基本数据类型分为:1,整数类型,用来表示整数的数据类型。2,浮点类型,用来表示小数的数据类型。3,字符类型,字符类型的关键字是“字符”。4,布尔类型,是表示逻辑值的基本数据类型。

java.library。路径

官方文档的定义是:<代码>搜索路径列表加载库时
从定义我们可以发现,首先是一个列表,也就是说可以包括多个地址,然后这些地址是用来帮助jvm搜索需要加载的库文件的。

设置java.library。路径

最简单的办法就是在启动jvm前通过<代码> java -Djava.library.path=path-to-your-libs 设置这个全局变量。

作用

那么这个地址具体是如何被使用的呢?
当我们调用<代码> System.loadLibrary(库名)时,会调用<代码> Runtime.loadLibary> java/lang/ClassLoader.loadLibrary> java.library。代码路径将会被获取,并用来生成需要加载的库的绝对路径,然后将这个绝对路径传给本地方法来调用<代码> dlopen、dlsym> 如果加载失败,会根据实际情况返回三个异常值:

SecurityException吗?如果安全管理器存在及其checkLink方法并# 39;t允许加载指定的动态库
如果?如果库不存在
NullPointerException吗?如果库名是null

可以参考OpenJDK的仓库:

static  void  loadLibrary (Class  fromClass, String 名字,   ,,,,,,,,,,,,,,,,,,,,,,,,,,,boolean  isAbsolute), {   ,,,,,,ClassLoader  loader =,,,,,,,,,,,(fromClass ==, null), ?, null :, fromClass.getClassLoader ();   ,,,,,,,if  (sys_paths ==, null), {   ,,,,,,,,,,,usr_paths =, initializePath (“java.library.path");   ,,,,,,,,,,,sys_paths =, initializePath (“sun.boot.library.path");   ,,,,,,,}   ,,,,,,,if  (isAbsolute), {   ,,,,,,,,,,,if  (loadLibrary0 (fromClass, new 文件(名称))),{   ,,,,,,,,,,,,,,,返回;   ,,,,,,,,,,,}   ,,,,,,,,,,,throw  new 如果(“停下来# 39;t  load 图书馆:,“,+,名称);   ,,,,,,,}   ,,,,,,,if  (loader  !=, null), {   ,,,,,,,,,,,String  libfilename =, loader.findLibrary(名称);   ,,,,,,,,,,,if  (libfilename  !=, null), {   ,,,,,,,,,,,,,,,File  libfile =, new 文件(libfilename);   ,,,,,,,,,,,,,,,if  (! libfile.isAbsolute ()), {   ,,,,,,,,,,,,,,,,,,,throw  new 如果(   ,,,“ClassLoader.findLibrary  failed 用return  an  absolute 路径:,“,+,libfilename);   ,,,,,,,,,,,,,,,}   ,,,,,,,,,,,,,,,if  (loadLibrary0 (fromClass, libfile)), {   ,,,,,,,,,,,,,,,,,,,返回;   ,,,,,,,,,,,,,,,}   ,,,,,,,,,,,,,,,throw  new 如果(“停下来# 39;t  load “, +, libfilename);   ,,,,,,,,,,,}   ,,,,,,,}   ,,,,,,,for  (int 小姐:=,0,,,小姐:& lt;, sys_paths.length ;,我+ +),{   ,,,,,,,,,,,File  libfile =, new 文件(sys_paths[我],System.mapLibraryName(名字));   ,,,,,,,,,,,if  (loadLibrary0 (fromClass, libfile)), {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

java中library.path和LD_LIBRARY_PATH有什么区别