Linux 下java 中添加c++

今天尝试使用java调用c++。  流程记录一下吧,因为遇到不少坑。

1. 创建 MyTest.java

     1) mkdir net; cd net;  mkdir test;   //包名: net.test

     2)cd testt; vi MyTest.java

         

package net.test;

public class MyTest {

	private native void test();
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new MyTest().test();
        System.out.println("AAAAAAAAA");

	}
	static{
		//System.load("/home/liulei/workspace/eclipse/test/src/net/test.so");
		System.loadLibrary("test");
	}

}

   (3)    cd ../..    //返回net目录

            javac net/test/MyTest.java   //在net/test下生成了MyTest.class

   (4)javah -jni -classpath . net.test.MyTest   //生成net.test.MyTetst.h

            

package net.test;

public class MyTest {

	private native void test();
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new MyTest().test();
        System.out.println("AAAAAAAAA");

	}
	static{
		//System.load("/home/liulei/workspace/eclipse/test/src/net/test.so");
		System.loadLibrary("test");
	}

}

     (5)  写test.cpp.   按照net.test.MyTest.h中函数的形式定义:

        

#include <iostream>
#include "net_test_MyTest.h"

JNIEXPORT void JNICALL Java_net_test_MyTest_test
  (JNIEnv *env, jobject obj)
{
    std::cout<<"-----------"<<std::endl;
}

     (6) 编译为.so

         g++ -fpic -shared test.cpp -o libtest.so -I/home/liulei/software/jdk1.8.0_74/include -I /home/liulei/software/jdk1.8.0_74/include/linux/

        (7) 将libtest.so的路径加入到LD_LIBRARY_PATH中。

       (8) java net.test.MyTest执行

你可能感兴趣的:(Linux 下java 中添加c++)