Java/JSP使用JNI技术调用本地动态链接库

1.软件环境

eclipse cpp indigo

eclipse java indigo

eclipse ee indigo

ubuntu 14.04 x64

tomcat v6

jdk v1.6.0_45

2.目的

    使用Linux C实现某种硬件终端与服务器通信指令的解析,然后:

  • 提供socket服务,给PC端C/S模式软件提供协议解析服务,将解析后的结果封装成JSON格式,返回给PC端
  • 提供动态链接库,供其他PC软件调用
  • 使用JSP等B/S工具,调用动态链接库,获取到解析后的JSON结果,并展示到WEB页面上

    本文主要介绍第三种,JSP如何通过JNI技术调用本地链接库。

3.实施方案

    要实现JSP调用本地动态链接库,需要一下四步:

       <1> 获取第三方动态链接库或封装自己的动态链接库程序。

               我的程序中,该部分对应的是硬件终端协议解析程序:libppa.so。

        <2>创建JNI Java类,用来生成C头文件,并加载动态链接库。

        <3>创建C工程:

                <3.1>实现<2>中生成的头文件;

                <3.2>加载<1>中的动态链接库libppa.so,调用libppa.so中的函数;

                <3.3>将该C工程打包成动态链接库(比如叫libjniso.so),供<2>中的Java类加载和调用.

        <4>将<2>中的Java工程封装成.jar包,以便在JSP工程中调用

    实现该方案,很重要的一点在于,eclipse中各种环境变量的配置,本文中对于各种环境变量的配置也做了详细描述,希望能帮助各位读者简单、快速地搭建起来这一套开发环境。

4.开发并封装动态链接库libppa.so

    开发工具:eclipse cpp indigo

    该动态链接库的作用是,提供一个入口函数,传入指令原文,解析后,将解析结果封装成JSON格式的字符串,并通过函数返回,该入口函数如下:

        char * ppba(const char *src_cmd) ;

    如果有通过C解析JSON需求的朋友,建议使用CJSON,项目网址:http://sourceforge.net/projects/cjson/

4.1创建动态链接库项目

    既然是通过eclipse开发动态链接库,首先要创建一个动态链接库项目:           

4.2配置编译环境

    开发就不讲了,主要讲,如果要成功生成动态链接库(.so)文件,需要如何配置编译环境。可能每个人的机器和系统、系统版本不同,编译环境会有差别。

4.2.1配置编译器编译选项-fPIC

    这个选项可能在你的机器上并不需要。我的PC安装的是64位Ubuntu 14.04,很不幸的是,我需要配置这个编译选项,如下:


    配置起来倒是很简单,右键你的C工程,在右键菜单中选择”Properties“,就会弹出以上页面,按照图中红色方框标注的地方设置即可。

4.2.2添加C数学函数库编译选项

    <

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值