Atitit. 。Jna技術與 解決 java.lang.Error: Invalid memory access
1. 原因與解決
Timeout::wait dll 或者other resource load finish...
And retry
2. jNA (這個ms sun 的)
我目前正做着一個相關的項目,說白了JNA就是JNI的替代品,以前用JNI需要編譯一層中間庫,現在JNA直接調用C的庫
JNA的功能和P/Invoke類似,但編寫方法與P/Invoke截然不同。JNA沒有使用Annotation,而是通過編寫一般的Java代碼來實現。
P/Invoke是.NET平台的機制。而JNA是Java平台上的一個開源類庫,和其他類庫沒有什么區別。只需要在classpath下加入jna.jar包,就可以使用JNA
JNA提供了一個動態的C語言編寫的轉發器,可以自動實現Java和C的數據類型映射。你不再需要編寫那個煩人的C動態鏈接庫。
當然,這也意味着,使用JNA技術比使用JNI技術調用動態鏈接庫會有些微的性能損失。可能速度會降低幾倍。但對於絕大部分項目來說,影響不大。
作者:: 老哇的爪子 Attilax 艾龍, EMAIL:1466519819@qq.com
轉載請注明來源: http://www.cnblogs.com/attilax/
3. Code
public static void inix() throws IniEx {
//while(true)
{
try {
Thread.sleep(5000);
try {
ini_core();
} catch (Exception e) {
ini_core();
}
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
}
}
private static void ini_core() throws IniEx {
if(userID<=0)
{
try {
} catch (Throwable e) {
throw new RuntimeException(e);
}
if(userID<=0)
throw new IniEx();
}
}
4. 參考
paip.java 調用c++ dll so總結 - attilax的專欄 - 博客頻道 - CSDN.NET.html
paip.java c# .net php python調用c++ c dll so windows api 總結 - attilax的專欄 - 博客頻道 - CSDN.NET.html