1. 程式人生 > >Linux下Java呼叫so檔案

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。