Jni在Hadoop上的使用(二)

2014-11-24 09:10:21 · 作者: · 浏览: 1
出的是动态库(共享库,有别于静态库的.a文件);”-o“表示输出文件名。


顺利的话,就能生成FakeSegmentForJni.so文件。


6. 本地java程序调用FakeSegmentForJni.so,代码很简单,如下:


package FakeSegmentForJni;

import java.io.IOException;
import java.net.URI;
import java.net.URL;

/**
* This class is for verifying the jni technology.
* It call the function defined in FakeSegmentForJni.java
*
*/

public class TestFakeSegmentForJni {

public static void main(String[] args) throws Exception {

System.out.println ("In this project, we test jni!\n");

// test jni on linux local
String s = FakeSegmentForJni.SegmentALine("now we test FakeSegmentForJni");
System.out.print(s);

} // main

} // TestFakeSegmentForJni


测试代码也很简单,就是输入给FakeSegmentForJni.SegmentALine一个字符串,并且打印它的返回结果。


在linux上面打了一个jar包,输入如下命令运行上述代码:


java -Djava.library.path='/xxx/TestJni/' -jar /xxx/TestFakeSegmentForJni.jar FakeSegmentForJni.TestFakeSegmentForJni


(用-Djava.library.path指明FakeSegmentForJni_FakeSegmentForJni.so文件所在的路径,否则jvm找不到;后面FakeSegmentForJni.TestFakeSegmentForJni是main函数所在的路径)


程序运行结果是在屏幕上输出


now we test FakeSegmentForJni--copy that


这样的字样,表示成功调用FakeSegmentForJni_FakeSegmentForJni.so中的函数。