Quick-x中luajavabridge示例代码中一个小问题
SunLightJuly 发表于3年前
Quick-x中luajavabridge示例代码中一个小问题
  • 发表于 3年前
  • 阅读 1607
  • 收藏 0
  • 点赞 2
  • 评论 4

【粉丝福利】:web前端基础到高级实战免费在线直播教学>>>   

Quick-x提供的luaj非常好用,很简单的实现了Lua调用Java的功能,平台也提供了一个Luajavabridge示例,按照例子可以很快的掌握调用方法。

不过,在使用过程中,发现在某些Android机器上,在调用时会出错退出。检查出错提示,开始未能确定原因;后来向前追查,发现前面有一个警告提示,大意是在调用java类时路径指示可能有误。根据提示,又查了一下JNI文档,确定了原因。

在JNI中,调用Java类时,文档里的标准是使用'/'进行路径分隔,而在Luajavabridge这个示例中,使用的是'.'分隔。多数机型这两种方式都是支持的,但有些机器只支持标准格式,所以会出现问题。

因此,从通用性出发,Luajavabridge里的这句代码:

local javaClassName = "com.quick_x.sample.luajavabridge.Luajavabridge"

最好是改成:

local javaClassName = "com/quick_x/sample/luajavabridge/Luajavabridge"

大家在开发自己的项目时也应该注意一下这个问题,呵呵。

(2014.5.30加注:quick-x的2.2.3版本已经集成了我递交的pr,现在官方版本代码已经修正)

共有 人打赏支持
粉丝 58
博文 15
码字总数 12480
评论 (4)
ChildhoodAndy
可以提个pr给廖大
SunLightJuly

引用来自“ChildhoodX”的评论

可以提个pr给廖大

呵呵,因为这个问题是在示例中,不是在平台代码里,所以没想到要提pr

weiweimail
我在使用时提示错误:[LUA ERROR] [string "framework.luaj"]:0: attempt to index global 'LuaJavaBridge' (a nil value),看了下framework.luaj里有此句:local callJavaStaticMethod = LuaJavaBridge.callStaticMethod,可是LuaJavaBridge类在哪里呢,没找到哇,楼主能否说下怎么用的
SunLightJuly

引用来自“weiweimail”的评论

我在使用时提示错误:[LUA ERROR] [string "framework.luaj"]:0: attempt to index global 'LuaJavaBridge' (a nil value),看了下framework.luaj里有此句:local callJavaStaticMethod = LuaJavaBridge.callStaticMethod,可是LuaJavaBridge类在哪里呢,没找到哇,楼主能否说下怎么用的
LuaJavaBridge在framework/luaj.lua里。这个要在Android真机上才能使用。
×
SunLightJuly
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: