栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot项目在Linux环境下调用SO库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot项目在Linux环境下调用SO库

1、首先,准备服务部署环境,这里将Springboot项目打包jar部署到Linux服务器上,Linux需要安装C环境用来生成SO文件。

        Linux安装C语言环境

[root@localhost ~]# sudo yum groupinstall "Development Tools"

        检查版本信息

[root@localhost ~]# gcc -v
2、接下来,在开发工具上编写C文件,这里用到一个.h头文件和一个.c文件

        .h头文件,类似于java中的接口,定义方法

        

#include "stdio.h"
int add(int a ,int b);

        .c文件,实现.h文件定义的方法,注意方法名、返回类型、参数一致。

#include"add.h"
int add(int a , int b){
    int c;
    c=a+b;
    return c;
}

   

 3、将这两个文件传送到Linux服务器上,进行编译成.SO库,SO库命名是lib加上.c文件的名字,如:add.c文件编译后是libadd.so。/home/jenkins/usr/local/jdk1.8是Linux的JAVA环境变量,根据自己的环境目录路径进行配置。
[root@localhost local]# gcc -shared -I /home/jenkins/usr/local/jdk1.8/include -I /home/jenkins/usr/local/jdk1.8/include/linux  add.c -o libadd.so

4、将生成的libadd.so复制到/usr/lib/目录下, 这里也可以自己配置调用SO库系统环境路径。

        

[root@localhost local]# cp libadd.so /usr/lib/
5、创建一个Springboot项目,引用JNA的pom依赖,JNA框架是JNI的封装,调用简单。

       

 
       
           net.java.dev.jna
           jna
           5.5.0
        
6、创建一个CLibrary接口,实现Library类,定义add.h头文件的方法,注意方法的名字、参数、返回类型要一致。
package com.test.demo.CLibraryInterface;
import com.sun.jna.Library;

public interface CLibrary extends Library {
    int add(int x ,int y);
}
7、接下来,在service层需要调用SO库中的方法时,用Native.load("add",CLibrary.class)方法实现接口CLibrary,通过CLibrary直接调用SO库中的方法。
@Service
public class AddServiceImpl implements AddService {
    CLibrary INSTANCE = (CLibrary) Native.load("add",CLibrary.class);

    @Override
    public int add(int x, int y) {
        int add = INSTANCE.add(x, y);
        return add;
    }

}
8、通过Controller层调用service层来调用这个方法
@RestController
public class AddController {
    @Autowired
    private AddService addService;

    @RequestMapping("add")
    public String getAdd(){
        int add = addService.add(1, 5);
        return ""+add;
    }
}
9、修改application.properties配置文件,将server.address修改成Linux服务器地址,因为要在Linux上启动。
server.port=8954                  //端口号
server.address=192.168.159.155     //服务器地址
spring.application.name=testAdd   //服务名字
10、将项目打包jar,放在Linux服务器上,到jar包目录下通过Java -jar jar包名 启动服务。
[root@localhost jar]# java -jar demo-0.0.1-SNAPSHOT.jar 
11、这里用的是虚拟机Linux,还要配置NAT做一个端口的转发,用于访问Linux上的服务。

 

 11、最后,我们通过访问:ip地址+端口号+方法名 就可以访问了。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号