2015-09-04 42 views
1

我想在Android應用程序中使用AndroLua作爲庫。AndroLua on Lollipop:JNI在應用程序中檢測到錯誤:無法調用static int org.keplerproject.luajava.LuaJavaAPI.javaNew(int,java.lang.Class)

一切順利的話,除了上的Android 5.x的(棒棒堂)

Android版本,但棒棒堂在我的應用程序崩潰,如果我叫juajava.new LUA功能。 的logcat的顯示

JNI DETECTED ERROR IN APPLICATION: can't call static int org.keplerproject.luajava.LuaJavaAPI.javaNew(int, java.lang.Class) on class java.lang.Class<java.lang.Class> 

我怎樣才能解決這個問題? 或者有沒有其他方法可以在Android中運行lua?

+0

我放棄了luajava.new函數。相反,在java中創建新對象並將新創建的對象返回給lua。 – WeiHung

回答

0
https://github.com/jasonsantos/luajava/issues/10

修復錯誤:

調用luajava.new(...)產生在Android ART以下錯誤: A /藝術:藝術/運行/ java_vm_ext.cc:410] JNI檢測到的錯誤IN APPLICATION:無法調用靜態int org.keplerproject.luajava.LuaJavaAPI.javaNew(int,java.lang.Class) with class java.lang.Class A/art: art/runtime/java_vm_ext.cc: 410]致電CallStaticIntMethod

經過一些代碼審查,我找出了問題。在luajava.c中,行 1377:ret =(* javaEnv) - > CallStaticIntMethod(javaEnv,clazz, method,(jint)stateIndex,classInstance); 「clazz」不是我們在這裏想要的對象 。它應該是:ret =(* javaEnv) - > CallStaticIntMethod( javaEnv,luajava_api_class,method,(jint)stateIndex, classInstance);

此外,我認爲,線1371:如果(clazz所== NULL ||方法== NULL) 應該是:如果(luajava_api_class == NULL ||方法== NULL)

尼爾。

相關問題