2013-09-26 34 views
0
When i'm trying to load the .so file from the Java, i'm getting error like this. 

Exception in thread "main" java.lang.UnsatisfiedLinkError: no yeslib.so in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
    at java.lang.System.loadLibrary(System.java:1047) 
    at com.rct.micros.util.GetCustClass.getScratchCode(GetCustClass.java:76) 
    at com.rct.micros.util.GetCustClass.main(GetCustClass.java:39) 

我試過System.load(absoulte path)和System.loadLibrary(sofilename)。兩者都給出了同樣的錯誤。當我將這個文件複製到usr/lib/jvm包中時,它正在工作..java.lang.UnsatisfiedLinkError:no在java.library.path中不存在

任何人都可以幫助如何使用Java解決此問題。我在Linux上運行。

+0

任何人都可以幫助我這個..! – Mohan

回答

0

庫有可能在你的路徑上,但由於其他原因無法加載。

我用來調試問題,這樣是運行Java -Xrunsofilename

-Xrun是JVM選項加載JVMPI庫(老譜接口)一個小竅門。如果成功,它會加載庫並抱怨它不是代理庫。但如果失敗(希望!)它會打印一條錯誤消息。這通常是比從UnsatisfiedLinkError中獲得的更具描述性的錯誤消息。

+0

我試過這個..但它給 「在VM初始化期間發生錯誤 無法在庫中找到JVM_OnLoad或Agent_OnLoad函數:」..有沒有其他解決方案呢? – Mohan

+0

這意味着你的圖書館是好的。問題必須在別處。假設你在Linux上,嘗試在strace下運行Java(可能是strace -f)並將stderr重定向到日誌。然後在日誌中搜索對您的庫的引用。這會讓你看到JVM在哪裏查找庫。它看起來在你期望的地方嗎?跟蹤中是否有任何意外的錯誤代碼? – pburka

相關問題