问题标签 [luaj]

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 回答
926 浏览

java - 从 Luaj 运行 Java 方法,“预期索引,得到字符串”

我正在做一个小项目,并希望包含 lua 脚本,以便用户可以创建自己的内容。我已经让它大部分工作了。我可以加载脚本,运行它们,或者从 java 中运行特定的 Lua 方法等。但我不知道如何在 java 中创建一个可以由 lua 脚本运行的方法。

我四处搜索,发现这篇文章准确地描述了我想要的东西。

不幸的是,我无法让它工作。

这是我正在尝试的最简单的代码示例。

主.java

MyLib.Java

SomeFunc.java

测试.lua

我得到的错误是index expected, got string. 这是env.set("mine", mine);在“MyLib.java”中的行引起的

完整的错误信息

0 投票
2 回答
608 浏览

java - 在 LuaJ 中获取打印调用

我正在编写一个 Java 程序,它使用 Lua 脚本来确定向程序的某些区域输出什么。目前,我的代码如下所示:

问题是调用tojstring()似乎return从 Lua 脚本返回值。这很好,但我需要print接听电话,因为这就是屏幕上显示的内容。截至目前,print调用直接发送到控制台(打印到控制台),我无法找到检索这些打印调用的方法。

我尝试过深入研究文档,但收效甚微。如果需要,将从 LuaJ 更改。

0 投票
1 回答
886 浏览

java - LuaJ 从 String 而不是 Path 加载

今天我尝试了 LuaJ 库,我真的很喜欢它,我唯一遇到的问题是我无法从包含函数的字符串加载,而是只能加载包含文件路径的字符串。

这是我尝试从字符串加载的代码:

使用此代码,我得到以下异常:

有效的代码,但我不想要,因为我需要从字符串而不是文件路径加载它是这样的:

所以我的问题是,我如何从字符串而不是路径加载它?

0 投票
2 回答
670 浏览

java - 是否可以从主机程序执行单个 lua 语句?

我正在尝试将基于 lua 的脚本系统嵌入到我的游戏引擎中。我希望脚本能够同时具有阻塞和非阻塞命令,例如:

由于“walkTo”需要在 1 帧以上的执行中处于“活动状态”,因此我希望能够从 Java 主机一次运行 1 条语句,而不是整个函数。这是因为拥有真正的多线程是多余的,这不是必需的。

如果我可以只执行 1 条语句,并保持执行状态“暂停”直到下一条语句执行,我将能够通过检查命令是否在主机中完成来实现阻塞命令,例如“walkTo”,如果是,则执行继续下一条语句,否则,等到下一帧迭代。

有什么方法可以使用 LuaJ(或任何其他 Lua api)从 Java 主机一次执行 1 条语句,还是我被迫使用 lex 和 yacc 开发自己的脚本引擎?

欢迎任何好主意,谢谢!

0 投票
1 回答
874 浏览

android - 在 Android 上使用 LuaJ 从 Lua 脚本中要求其他 lua 脚本

我在需要其他 Lua 脚本的 Android 上通过 LuaJ 从 Java 调用 Lua 脚本时遇到问题。我认为这与我当前的工作目录有关。

我在Java中尝试的是:

pathTest.lua:

对于这个特定的测试,为简单起见,两个 lua 文件都在同一个目录中,但我需要其他 lua 文件的相对路径。

我尝试过使用 package.path,但我尝试过的都没有奏效。在 Android 中运行时,默认情况下 package.path == "?.lua"。

我已经通过命令行使用相对路径运行了这个测试,并使用 Koneki 在 Eclipse 中运行了这个测试,它们工作正常。尤其是失败的 Android 环境。

此外,我无需在 Android 中正常工作即可获得 Lua 脚本。

0 投票
2 回答
1057 浏览

android - LuaJ - 在从文件调用 Lua 脚本之前在 Java 代码中设置 package.path

我想出了如何使 Lua 脚本在 Android 环境中需要其他 Lua 脚本

但是,该解决方案在顶级 Lua 脚本本身中有 package.path 配置。我想将 package.path 配置移动到运行脚本的 Java 代码,因为 package.path 特定于 Android 环境,而脚本可以在任何地方运行。

这是我尝试过的:

我还尝试了其他一些形式,例如:

或者从负载中获取 LuaValue 结果并将其传递给 LuaClosure。它们都导致脚本一开始就失败require,无法找到引用的脚本。

有人有想法么?

*edit - 如果有人知道如何将工作目录设置为 /assets/lua/ 文件夹,那么我可以在 Lua 脚本中使用相对路径,那就更好了。

0 投票
0 回答
84 浏览

scala - 如何复制动态绑定函数的“普通”调用语法?

在下面的示例中,该变量fn2_class表示要从 lua 脚本加载的函数,因此var定义是必要的;在编译时不知道实际功能是什么。该变量fn1_class表示同一想法的静态绑定版本。fn1_class因此,和之间的唯一区别fn2_class是前者被定义为一个值,而后者被定义为一个变量。

该方法getFunction表示如何加载 lua 函数。真正的代码包括调用 luaj 库来生成函数。

考虑到这个上下文重新表述这个问题:如何定义一个fn3_class动态绑定的变量,并且与示例中的值具有相同的调用语法fn1_class

这个问题涉及 scala-2.10 或更高版本。这种代码在 scala-2.9 中编译和执行。

说明问题的示例代码:

上面的代码在编译时会生成以下错误消息(scala-2.10)。

0 投票
1 回答
2002 浏览

java - Luaj / Java: org.luaj.vm2.LuaError: loop or previous error loading module

我正在学习 Luaj 库,并尝试在单元测试中实现双曲线示例:

hyperbolic.java根据示例构建

而在hyberbolic.lua

但是测试会产生以下错误

这个错误是什么意思,我该如何解决?

0 投票
1 回答
578 浏览

java - java - LuaJ:超过 3 个参数

是否有可能在 lua 函数中使用三个以上的参数?

这是我的一段代码:

0 投票
1 回答
916 浏览

android - 尝试在 android 应用程序中使用 LUAJ,找不到类 Lua

我怀疑我的无知比 LUAJ 更深刻,所以请温柔一点。

目标:在我的应用程序中定期运行 lua 脚本,在 Lua 和 Java 之间来回传递数据,具有一定的安全性(例如,不要让 lua 删除文件)

我的大部分应用程序都是直接的 android/java,并且工作正常。在这种情况下,我不是一个白痴。

通过各种示例,我最终将 LUAJ Jar 文件作为外部 Jar 放入 Eclipse。之后,这些进口工作

并且大部分代码主要是编译,但我仍然没有在此行中使用的“Lua”接口:

该行因“由于 Lua 不是超类而无法实现”而失败。我很确定它不知道 Lua 是什么(除非它在其他命名空间或其他东西中找到同源)。

此外,我对 Lua:add() 等的覆盖也抱怨(他们没有超级可以覆盖)例如:

(必须覆盖超类型)

我假设我需要为 Lua 本身添加一个外部 Jar 之类的东西?,但我没有找到这样做的说明(另外,如果 LUAJ 是 Lua 的完整 java 实现,那么我希望这个接口类也成为 LUAJ jar 的一部分。

在我找到的三个 LUAJ jar 中,我只告诉了 Eclipse 其中一个(JSE,而不是 JME 或 Source)。