前些天在配置通过OCI的方式连接Oracle中曾进碰到一个关于“java.lang.UnsatisfiedLinkError: no XXX in java.library.path”这么一个问题,这个问题纠结了许久才解决,解决方式参考前面的文章。
趁双休日好好的理解一下产生这个问题的来龙去脉。
先看一段话先:
PATH is the environment variable.
java.library.path is the system properties.
When the java application started, JVM will set java.library.path’s value using PATH’s value.
In java program, it’s very difficult to get the value of environment variables, but it’s very easy to get/set system properties. Use
System.getProperty(”project_root”, “..”);
System.setProperty(”project_root”, “..”);
java.libaray.path 是system properties,在windows系统通常是使用PATH的值,而在Linux上是用LD_LIBRARY_PATH的值。 随便也说一下java.class.path,他是对应于CLASSPATH中的值。
那LD_LIBRARY_PATH的值主要是干什么呢?他是来处理非标准路径下的”共享库“的,可以理解成windows 的dll,但在linux下是*.so的文件。
说完了基本的概念,再来看看OCI是怎么连接Oracle的,其实OCI是通过JNI(java native interface)的方式来访问Oracle的,请看下图
1)我们知道Oracle的驱动是classes12.jar(ojdbc14.jar),这里应该对应着java-class;
2)同样我们在JBOSS启动脚本中设置  JBOSS_NATIVE_DIR=”/opt/instantclient_10_2″,其实就是将LD_LIBRARY_PATH=”/opt /instantclient_10_2″,而在这个目录下有大量的*.so文件,这些应该对应native;
3)至于jni-stub是一些存根文件,可以参考一下JNI相关的说明,这里就暂不描述了(有时间可以再深入学习)。

本文转自 神相 51CTO博客,原文链接:http://blog.51cto.com/shenxiang/269201,如需转载请自行联系原作者

梦回编程- 由LD_LIBRARY_PATH引发JNI的理解相关推荐

  1. 从λ演算到函数式编程聊闭包(2):彻底理解JavaScript闭包规则

    闭包是很多语言都具备的特性,上篇<从抽象代数漫游函数式编程(1):闭包概念再Java/PHP/JS中的定义> 闭包的特性 闭包有三个特性: 函数嵌套函数 函数内部可以引用外部的参数和变量 ...

  2. 并发编程专题——第一章(深入理解java内存模型)

    说到并发编程,其实有时候觉得,开发中真遇到这些所谓的并发编程,场景多吗,这应该是很多互联网的在职人员,一直在考虑的事情,也一直很想问,但是又不敢问,想学习的同时,网上这些讲的又是乱七八糟,那么本章开始 ...

  3. php 取对象数据_过程式编程和面向对象编程有什么区别?怎么理解php对象的概念?...

    PHP编程中对象的概念? 在上一篇文章咱们介绍了使用了php中的new pdo来连接数据库MYsql,其实在我们学习编程语言时经常会碰到"对象"这个词汇,准确来说是"面向 ...

  4. 小马哥spring编程核心思想_Spring核心思想理解

    前言 在拉勾教育Java高薪训练营再次学习了spring,再次感叹spring的核心思想.强调一下,IOC和AOP是一个技术思想(理论),并不是spring提出的,spring在技术层次把这两个思想做 ...

  5. 【C/C++多线程编程之五】pthread线程深入理解

    多线程编程之pthread线程深入理解 Pthread是 POSIX threads 的简称,是POSIX的线程标准. 前几篇博客已经能给你初步的多线程概念,在进一步学习线程同步等多线程核心知识之前, ...

  6. 我对响应式编程中Mono和Flux的理解

    1. 前言 很多同学反映对响应式编程中的Flux和Mono这两个Reactor中的概念有点懵逼.但是目前Java响应式编程中我们对这两个对象的接触又最多,诸如Spring WebFlux.RSocke ...

  7. 学半年编程才知道 “面向对象” 可以这样理解

    面向对象是向现实世界模型的自然延申,是一种"万物皆对象"的一种编程思想. 什么是万物皆对象,对象有具体表现在哪些地方:在现实生活中的任何物体都可以归为一类事物,这一类事物可以理解成 ...

  8. 从网易校招编程题谈起,轻松理解有趣的0-1背包问题

    从网易的一道算法题开始 最近在准备春招实习,偶然做到网易的一道编程题,一方面找了很多博客看的云里雾里,这里特别写下解题的思路和逻辑,一方面加深印象,另一方面供需要的你学习参考.好了,话不多说,开始吧. ...

  9. 使用 XMLBeans 进行编程 XMLBeans 如何引发数据绑定的巨大变革

    深入考察 XMLBeans 的特性和功能.本文通过一个简单的例子介绍 XMLBeans 技术,然后一步一步地介绍编译和绑定的过程,讨论 XML 游标.标记和 XQuery 表达式等高级特性.本文还将讨 ...

最新文章

  1. 关于Hinton团队无监督新作SimCLR的所思所想
  2. TabActivity中的Tab标签详细设置
  3. 获取Class类对象的三种方式
  4. [ARC074C] RGB Sequence(dp)
  5. 获得网页中元素的位置
  6. 2021年怎么自学前端?
  7. opencv findContuors 详解
  8. 爬取猎聘大数据岗位相关信息--Python
  9. hpm1216nfh驱动程序_惠普m1216nfh打印机驱动
  10. 汽车电子电气架构EEA演变
  11. win10专业版如何快速恢复出厂设置的方法
  12. Python —— 数据科学的手段 (第2版)配套代码
  13. 【必会】SQL 命令大全
  14. 一种改版后检查硬件PCB生产资料的方法***-----Gerber对比,检查的方法
  15. 一大波优秀3D作品来袭!看各国3D艺术家如何描绘2020!
  16. 信息系统的无单点故障设计
  17. Dynagon代码阅读感想
  18. python arduino i2c1602_Arduino 将1602液晶显示屏改造为IIC接口
  19. 编程命名规范—四种命名方法
  20. Elasticsearch DSL语法中queries/filters执行顺序探秘

热门文章

  1. 数据库 CURD测试题【中等】
  2. ux和ui_他们说,以UX / UI设计师的身份加入一家初创公司。 他们说,这会很有趣。
  3. 有一种爱情叫永不改变_设计就像爱情一样,总是在寻找一种方式
  4. 软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题6-10题)...
  5. CoffeeScript 1.9发布,引入对生成器的支持
  6. SAP BW系统日常维护日常工作及常见的Infopackage错误
  7. 爱情二十九课,驾驭爱情
  8. java中想要保留2位小数_java使double保留两位小数的多方法 java保留两位小数
  9. QWaiteCondition思考3
  10. C#学习笔记-Windows窗体自定义初始位置