您的位置:首页 > 运维架构 > Linux

Linux下Java调用so文件

2015-09-08 15:39 260 查看
尝试了一下在linux下Java调用so文件。需要注意以下几点:

1,在linux下调用的so文件的格式必须是linux的,而不是x86或其他。

2,linux打包的so文件的位数必须和本机JVM的位数一样,都是32位或都是64位,JVM位数可以通过java -version查看。如果位数不一致就会报以下错误:wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)


3,so包path要配置好。如果没配置好就会报以下错误:java.lang.UnsatisfiedLinkError: no *** in java.library.path



可以用 System.out.println("java.library.path:"+System.getProperty("java.library.path")) 来看path是什么。出现错误的原因是java path中找不到so包。解决办法有2个。

1,把so包cp到对应的path中。

2,在命令行中定义so包的path。

export LD_LIBRARY_PATH=/**/*/** (so所在的目录)

只在当前shell下有效...

4,开始使用了,在JAVA开头中load一下。

System.loadLibrary("stockocr");

so文件的全名是libstockocr.so。注意linux下load时需要去掉lib和so。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: