一。如何使用native方法?
java一般使用兩個path:classpath 和 java.library.path
classpath是指向jar包的位置。也就是JDK的lib目錄
java.library.path是非java類包的位置如(dll,so)
配制方法:
1:LINUX下的系統變量LD_LIBRARY_PATH來添加java.library.path
2:在vm arguments裡添加-Djava.library.path=所在目錄
3:在 一個工程的Java Build Path中配置,如下圖
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cGcq5iMzMzM4YGO5kDO4IDMyEWZyYzX0QzMxUTMzAzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.jpg)
二。為什麼要使用native方法?
Java不是完美的,Java的不足除了展現在運作速度上要比傳統的C++慢許多之外,Java無法直接通路到作業系統底層(如系統硬體等),為此Java使用native方法來擴充Java程式的功能。
三。Native Hadoop Libraries
預設沒有配制native hadoop在跑MapReduce時會出現
13/12/18 10:57:59 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
13/12/18 10:57:59 WARN snappy.LoadSnappy: Snappy native library not loaded
如果選擇自己編譯Hadoop
提示:Execute failed: java.io.IOException: Cannot run program "autoreconf"
yum install autoconf automake libtool
配置native-hadoop library
1.配制Hadoop Library
2.在Hadoop Library裡配置 native hadoop 目錄