use*_*774 2 java eclipse lua android libgdx
我目前正在使用LibGDX框架在Java中编写游戏引擎.几个月以来,我已成功使用LuaJ 3.0和我的引擎.我在使用Android(在两个设备上测试)或桌面(在Eclipse内外)上运行脚本时没有遇到任何问题.
但是,当我今天尝试部署到Android时,我收到以下错误:
org.luaj.vm2.LuaError: script:2 vm error: java.lang.ClassNotFoundException: com.javamon.console.ScriptPlayerCreate
Run Code Online (Sandbox Code Playgroud)
导致此错误的脚本行是:
Result = luajava.bindClass("com.javamon.console.ScriptPlayerCreate")
Run Code Online (Sandbox Code Playgroud)
这与Android上所谓的"未找到"类相似.
如果我尝试绑定一个常规的java类,比如java.lang.ClassNotFoundException,我没有得到任何错误.但是,在桌面版本上不会发生此错误,无论是从Eclipse内部还是通过可运行的*.jar运行.
这是从LogCat检索的堆栈跟踪:
org.luaj.vm2.LuaError: script:2 vm error: java.lang.ClassNotFoundException: com.javamon.console.ScriptPlayerCreate
at org.luaj.vm2.lib.jse.LuajavaLib.invoke(Unknown Source)
at org.luaj.vm2.lib.VarArgFunction.call(Unknown Source)
at org.luaj.vm2.LuaClosure.execute(Unknown Source)
at org.luaj.vm2.LuaClosure.call(Unknown Source)
at com.javamon.console.Script.runFunction(Script.java:91)
at com.javamon.console.Script.runFunction(Script.java:96)
at com.javamon.console.ScriptPlayerCreate.run(ScriptPlayerCreate.java:39)
Run Code Online (Sandbox Code Playgroud)
困扰我的是最后一行.ScriptPlayerCreate肯定存在 - 它正在运行产生错误的脚本!
我尝试过的事情:
com.javamon包中的不同类(同样的问题)classes.dex- ScriptPlayerCreate肯定在那里我想重申一下,我已成功使用LuaJ和Android 几个月没有发生任何事故.此外,自从上次(成功)Android部署以来,我没有更改脚本引擎.
尝试恢复到我的应用程序和Eclipse的备份版本后,问题仍然存在 - 即使在另一台计算机上也是如此.我开始怀疑luajava.bindClass()不知道如何解释内容classes.dex,而是搜索实际的类文件.
当我尝试重新编译一些备份版本时,我注意到重新编译的版本几乎总是比备份文件小 classes.dex.使用Eclipse的/ Android编译器可能有些错误或已经改变了?
我尝试手动将类文件插入到APK中的com/javamon/console /文件夹中,但当然会弄乱文件的完整性,即使重新签名后该应用程序也无法加载.有任何想法吗?
小智 5
我遇到了类似的问题,我会解决它
LuaJavaLib.java:202
原始返回Class.forName(name,true,ClassLoader.getSystemClassLoader());
更改为返回Class.forName(name,true,Thread.currentThread().getContextClassLoader());