问题标签 [luajava]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
464 浏览

java - 如何通过反射 luaj 传递类 - java

我使用 LuaJ,它包含一个库:luajava,它允许通过反射将一个类传递给 lua 环境。你知道怎么做吗?我注意到有一种方法可以传递编译类:

未编译的类:*.java 怎么样?如何通过它?

0 投票
1 回答
429 浏览

java - LuaJava:从 Java 调用 Lua 对象的方法?

我有通过 LuaJava 调用 Lua 的 Java/Scala 代码。我想模仿一些从 J/S 管道到 Lua 管道的对象层次结构;基本上在语言中有伴生对象。换句话说,如果我在 J/S 中创建一个“Cracker”,我将在 Lua 中创建一个“Cracker”对象。然后当我在 J/SI 中调用类似“eatCracker”的方法时,也可以调用 Lua 伴生对象的“eatCracker”。

问题是,我不知道如何创建和存储 Lua 对象,以及如何调用特定对象的方法。

有人能帮忙吗?

0 投票
2 回答
447 浏览

lua - 在 luajava 中强制使用整数类型

有没有办法使用 LuaJava 强制整数类型?我正在尝试在 LuaJ 3.0 beta 1(luaj-jse-3.0-beta1.jar)中创建一个java.awt.Color. 考虑到构造函数 ( JavaAPI )的 Java API 可用性,您不会认为这是一个问题。我对将整数强制放入构造函数感兴趣的原因是Color可用的构造函数采用intor的三个和四个参数float。由于 Lua 的数字类型是double,因此 LuaJ(或 LuaJava)调用float构造函数的版本。

起初,我认为这不会是一个问题,但在尝试使用它后,我注意到我收到了一个错误的Color. 这些值没有被正确地传递给构造函数,并且Color对象基本上被破坏了,没有明显的错误(它没有崩溃任何东西,只是没有显示)。

这是一个简单的例子:

如果我将r = 1.0, g = 0.2,传递b = 0.2给这个构造函数,然后 print j_color,我会看到

在输出中。事实上,我可以使用任何我想要的东西rg只要b = 0,没有问题,但否则,它会导致痛苦和痛苦。

我有点好奇是否有其他人遇到过这个问题。如果不能解决,我会联系 LuaJ 项目的 PI 并报告。

附带说明:构建一个解决方案是一件简单的事情,我使用定制的 Java 函数来负责创建Color. 我更担心这个问题的存在,以及是否有某种方法可以指定要使用的构造函数,或者明确告诉 LuaJava 使用整数,而不是双精度数。

更新

我也尝试使用四浮点构造函数,并且出现了同样的问题。如果我传入以下值之一:alpha=0, 0.5, 1构造函数正常运行。其他任何事情都会产生上述结果。

0 投票
1 回答
1183 浏览

java - LuaJ 在 java 中需要 json 模块

我试图在 Java 代码中加载 json 模块。文档中的示例显示它应该像这样,但它不起作用。它要求模块在项目中还是从 LUA_PATH 加载它。有没有人有这个问题的经验?

线程“主”org.luaj.vm2.LuaError 中的异常:找不到模块“json”:json 没有字段 package.preload['json'] json.lua 没有类“json”

看起来它只是在 LuaJ 包中尝试。

0 投票
0 回答
516 浏览

java - Foreach 在 Lua 中通过 Java Hashmap 循环

所以我是 Lua 的新手,我已经让 LuaJava 与我的 Java 代码一起运行,但我一直在试图弄清楚如何在 Lua 中的 hashmap 上运行 foreach 循环。

在我的java代码中,我有这个:

爪哇

然后我得到了我的 lua 脚本,我试图弄清楚如何在 EntityManager 中遍历 hashmap 中的所有实体:

卢阿

我几乎已经为我的函数等设置了所需的一切,但我不知道如何创建一个相当于 Java foreach 循环的 Lua,以在我​​的 Lua 脚本中迭代我的 Java 哈希图。

另外我想知道如何在 Lua 中检查对象的类型,以查看它是否是我的 Java 类之一的实例。例如,在 Java 中,如果我想查看一个对象是否属于对象类型,我会执行以下操作:

哦,我不完全确定我传递给 Lua 脚本的 Java 对象是否保留了它的 Java 类类型,我也不知道如何去做这样的事情。

顺便说一句,我使用的是 Kepler Project 的LuaJava

谢谢。

0 投票
1 回答
254 浏览

java - 安装 LuaJava

我有一个 Mac 版本 10.9,我正在尝试构建 LuaJava。我构建 Lua 5.0 没有问题,但是在使用本教程时出现此错误:

当我运行 make 时从终端。我追踪了 jni 标头,但现在我不知道如何处理它/将它放在哪里以便找到它。

0 投票
1 回答
195 浏览

java - 使用 LuaJava 的 EnumMap(尝试调用 nil 值)

正如标题所说,我对 LuaJava 和 EnumMap 有疑问。我正在尝试做一个 RPG 库,所以我们有一个带有一些属性的角色和它们的列表。在下面的代码中,我将只报告重要的事情。

我有一个名为 ConcreteAttribute 的类,它扩展了 AbstractAttribute,它有一个带有 String 和两个 int 的构造函数。

然后我有一个名为 StatType 的 Enum,它代表你在 RPG 游戏中的统计数据:

我还有一个名为 PlayableCharacter 的类,它有(我只会报告重要的事情):

和 Map 的“放置”方法。

为了创建一个新角色,我目前正在这样做(“Eroe”扩展了 PlayableCharacter):

并且工作正常,但是当你有很多 ConcreteAttribute 和很多 Character 时,我认为这不是最好的解决方案。所以我想用 Lua 来创建角色的“具体” istance,这样(小例子):

但我收到此错误:PANIC: unprotected error in call to Lua API (attempt to call a nil value)。问题出在最后一行,但我对 Lua 真的很陌生,我什至不知道 Lua 是否可以处理 EnumMap。

有什么解决办法吗?

谢谢大家,对不起我的英语不好^^

编辑:我已经编辑了代码,我发现了一个错误

0 投票
1 回答
583 浏览

java - 如何在 Luaj 中加载 Lua-Filesystem 和 Lua-Penlight

我有一个使用 Luaj 3.0 库的程序,我发现了一些我想包含的 lua 脚本,但它们都需要 lua 文件系统和 penlight,每当我尝试使用这些库时,它都会出错。

有谁知道我应该如何利用 Luaj 中的那些?

编辑:更多信息可能会有所帮助:我是 Archlinux 64 位系统,安装了 open-jdk8 Luaj、lua-filesystem 和 lua-penlight。我找到了一组名为Lua Java Utils的库,我想将其包含在我的项目中。但它总是得到这个错误:

第 24 行供参考:

它需要 penlight 库,而后者又需要 lua 文件系统,这就是我安装这两个文件系统的原因。我通过测试发现 Lua 文件系统没有通过尝试运行来加载lfs.currentdir()。我试过globals.load("local lfs = require \"lfs\"").call();了,但它也给出了一个错误。

我的 Lfs 图书馆位于/usr/lib/lua/5.2/lfs.so和 penlight 在/usr/share/lua/5.2/pl

0 投票
1 回答
728 浏览

java - LuaJava - 调用 Lua API 时出现不受保护的错误

我试图让一个在 LuaJava 中工作的简单函数(添加两个数字)。我对 Lua 的经验很少,并且发现这很困难,因为我无法找到 LuaJava 的深入文档。我目前可以从 lua 打印到 java 控制台,但除此之外什么也没有。

我尝试实现了一些方法,但每次都得到相同的错误:

这是我正在使用的代码:

和 Lua 文件:

我的 IDE 是 Eclipse。提前感谢您的帮助。

0 投票
2 回答
110 浏览

android - Lua全局表在不同文件中不同

我在 Android 上使用 LuaJava 的AndroLua端口,当我在文件 A 中定义全局表并尝试从文件 B 访问它时,缺少一些条目:

档案一:

Game:init()方法是从 java 中调用的。

文件 B:

为什么文件 B 不打印 '7' 和 'othername'?