JNative用法注意事项

公司要做个跟设备打交道的web系统,需要java调用dll。搞java的同事说JNative看起来挺好使的,找俺帮忙调通。用的是1.3.1版本

  1. 环境设置。

    JNative的调试信息需要打开才能更清楚些,要不总是说没加载库,跟没说一样。

    System.setProperty("jnative.debug", "true");

    如果调试信息里有System.LoadLibrary(),说明没有加载JNativeCpp.dll,指定全路径即可,双斜杠哦。

    System.setProperty("jnative.loadNative", "D:\\Test\\JNativeCpp.dll");

  2. lib库路径问题
    • windows

      在windows下需要把调用的dll路径设置到环境变量PATH中,除非你不介意拷到win32中,dll依赖的库也得在PATH或win32中。

    • linux

      linux下同样需要设置环境变量,编辑bashrc,添加 export LD_LIBRARY=so路径,依赖的库也得在PATH中,除非都放在/usr/lib/下
  3. lib库名称问题

    无论linux还是windows在JNative的构造函数中的lib库名字为库全名,包括扩展名dll、so,而且so需要包括前面的‘lib’,貌似与网上说的不太一样。
  4. 资源释放问题

    有些设备需要先初始化在操作,最后释放,所有功能都分散在不同函数中,JNative需要有个静态的实例,每次创建调用函数时lib库依旧是加载的。

顺便吐槽下公司部署前2天才通知说在linux下部署,可怜我这linux、java双小白。。。。。。

时间: 2024-10-14 03:48:19

JNative用法注意事项的相关文章

[转]js中的appendChild 和insertBefore的用法注意事项

appendChild 学过的都知道,appendChild() 方法可向节点的子节点列表的末尾添加新的子节点. 如果对它理解不深,经常会犯一些错误.我以前就是哈哈. 下面我们来分析一下. var myDiv = document.createElement_x("div"); var text = document.createTextNode("sichaoyun"); myDiv.appendChild(text); alert(myDiv.childNode

::WritePrivateProfileString()的用法,以及GetPrivateProfileString的用法注意事项

WritePrivateProfileString(_T("Section1"),_T("Field1"),Field,savePath); 函数说明,这是在写*.ini文件时使用的函数,在写ini文件的时候,可以调用这个函数,而不用使用挺费劲的关于txt文件的读写. 第一个参数为当前ini文件中节的名字. 第二个参数是ini文件中的字段名:Field1=*** 第三个参数是要写入的字符串,假设Field=1234,写出来的效果应该是:Field1=1234 第四个

vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错.今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性. erase的函数原型有两种形式: iterator erase(iterator position); iterator erase(iterator first, iterator last); vector<int> veci;veci.push_

实习小白::(转) vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错.今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性. erase的函数原型有两种形式: iterator erase(iterator position); iterator erase(iterator first, iterator last); vector<int> veci; veci.push

ibatis selectKey用法注意事项

在我们使用插入数据库时,大部门ID是自增长的,需要返回ID,然后再插入相关的关系表中.但是有时候同样也会抛出问题,比如以下场景: 开始使用int做为ID自增长,返回相关的主键值,但是后来改动,改为String类型,使用UUID赋值,但是在ibatis时,依然保留如下的配置:   <insert id="insertInternet" parameterClass="dmGroupDO" >     INSERT INTO dm_group(id,name

ie8响应式兼容方案,respond.js的用法及使用时无效的解决办法

响应式布局,html5和css3,ie8不支持,可以通过respond.js插件来实现响应. 用法注意事项 一,css样式表内容.要放在css文件中, 二,css文件必须是无bom头格式的编码文件 三,css文件必须放在head标签内进行引用.放在html中的body中引用无效. 四,css文件必须放在respond.js之前引用,respond.js可以放在body或网页底部,但为了防止闪屏,建议放在head中. 用法示例 <!doctype html> <html> <h

Bitset 用法(STL)

std::bitset是STL的一个模板类,它的参数是整形的数值,使用位的方式和数组区别不大,相当于只能存一个位的数组.下面看一个例子 [cpp] view plaincopy bitset<20> b1(5); cout<<"the set bits in bitset<5> b1(5) is:" << b1 <<endl; 结果是   the set bits in bitset<5> b1(5) is:000

3rd 逻辑运算符的基本用法

03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连接boolean类型的表达式或者值. b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子. 算术表达式:a + b 比较表达式:a == b(条件表达式) C:结论: &逻辑与:有false则false. |逻辑或:有true则true. ^逻辑异或:相同为false,不同

03 java语言基础逻辑运算符

03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连接boolean类型的表达式或者值. b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子. 算术表达式:a + b 比较表达式:a == b(条件表达式) C:结论: &逻辑与:有false则false. |逻辑或:有true则true. ^逻辑异或:相同为false,不同