java调用方式

步骤一

	1. vi /etc/profile
		在export PATH下方加入如下代码
		export LD_LIBRARY_PATH=/home/app/so/
		其中/home/app/so是咱们将要调用的so库文件存在路径
	2.:wq
	3.source /etc/profile 使用配置生效
	在docker中配置
	1.vi ~/.bashrc
		再文件最正方加入如下代码
		export LD_LIBRARY_PATH=/home/app/so/:$LD_LIBRARY_PATH
	2.:wq
	3.source ~/.bashrc
	

步骤二

	1.创建java调用jni文件
		public class TestJNI{
			static {
				System.loadLibrary("TestJNI");
    		}
		    public interface Callback {
	    	    void callback(String msg);
		    }
		    public native int start(String str);
	    	public native int stop(String str);
    	}
    2.通过命令行 进入TestJNI.java所在目录,执行 javac TestJNI.java生成TestJNI.class
    3.如果TestJNI无包名,执行 javah -jni TestJNI生成xx.h;
    4.如果TestJNI有包名,则进行完整命名的上级文件夹,执行javah -jni 完整包名.TestJNI
    	如TestJNI.java package com.sc.aa.bb.cc;那么 需要进入com包的上层目录中执行命令。
    5.将xx.h 交给写so库文件的同时,帮忙导出相关so库文件
    6.大概率下 同事导出的so库文件名为 libTestJNI.so
    7.TestJNI.java中 static块内,不能写libTestJNI.so,要使用TestJNI.so;
    8.调用方式:
    	TestJNI test = new TestJNI();
    	test.start("start");
    	test.stop("stop");

springBoot调用方式

步骤一

	同java调用方式 步骤一

步骤二

	1.同java调用方式 步骤二 前7条相同;
	2.TestJNI.java中,在文件名处加入@Component注解;
		此步骤在生成.h文件之后再加入注解。防止javac编译时,文件报错。
	3.调用方式:
		@Resource
        private TestJNI testJNI;
        testJNI.start("start");
        testJNI.stop("stop");
	
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐