Linux下Java调用so文件

尝试了一下在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。


你可能感兴趣的:(Linux下Java调用so文件)