gpt4 book ai didi

java - LuaJ 和 Android : cannot bind class

转载 作者:太空狗 更新时间:2023-10-29 15:53:21 29 4
gpt4 key购买 nike

我目前正在使用 LibGDX 框架用 Java 编写游戏引擎。几个月来,我已经成功地将 LuaJ 3.0 与我的引擎一起使用。让脚本在 Android(在两台设备上测试)或桌面(进出 Eclipse)上运行没有问题。

但是,当我今天尝试部署到 Android 时,出现以下错误:

org.luaj.vm2.LuaError: script:2 vm error: java.lang.ClassNotFoundException: com.javamon.console.ScriptPlayerCreate

导致此错误的脚本行是:

Result = luajava.bindClass("com.javamon.console.ScriptPlayerCreate")

这在排版上与 Android 上所谓“未找到”的类相同。

如果我尝试绑定(bind)常规 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)

让我困扰的是最后一行。 ScriptPlayerCreate 确实存在——它正在运行产生错误的脚本!

我尝试过的事情:

  • 尝试不同版本的 LuaJ
  • com.javamon 包中绑定(bind)不同的类(同样的问题)
  • 更新我的 ADT/SDK 插件
  • 在 Eclipse 中清理/重建项目
  • “重新开始”(使用 GUI 工具创建一个新的 LibGDX 项目,并手动导入我的源文件)
  • 正在检查 classes.dex -- ScriptPlayerCreate 肯定在那里
  • 在不同的 Android 设备(Moto X 和 Incredible 2)上进行测试

我想重申,我已经成功地将 LuaJ 与 Android 结合使用了 几个月,没有发生任何事故。此外,自从我上次(成功)Android 部署以来,我没有更改我的脚本引擎。

更新

尝试恢复到我的应用程序和 Eclipse 的备份版本后,问题仍然存在——即使在另一台计算机上也是如此。 我开始怀疑 luajava.bindClass() 不知道如何解释 classes.dex 的内容,而是在搜索实际的类文件。

当我尝试重新编译一些备份版本时,我注意到重新编译的版本几乎总是有一个更小 classes.dex 文件。也许 Eclipse/Android 的编译器出了什么问题或发生了变化?

我尝试将类文件手动插入到 APK 中的 com/javamon/console/文件夹中,但这当然会破坏文件的完整性,即使在重新签名后应用程序也不会加载。有什么想法吗?

最佳答案

我遇到了类似的问题,我会解决的

LuaJavaLib.java:202

原创 return Class.forName(name, true, ClassLoader.getSystemClassLoader());

改为 return Class.forName(name, true, Thread.currentThread().getContextClassLoader());

关于java - LuaJ 和 Android : cannot bind class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23025835/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com