小编Nat*_*han的帖子

LuaJ:无法在Lua脚本中调用'require'函数

我正在做一些奇怪的事情,导致这个错误.

以下简单示例失败:

--> thingy.lua
function doThing()
  print( "Thing has been done." );
end
Run Code Online (Sandbox Code Playgroud)

--> test.lua
require( "thingy" );
Run Code Online (Sandbox Code Playgroud)

当thingy.lua被执行时,没有问题.执行test.lua时,我看到以下错误:

script:2 module 'thingy' not found: thingy
no field package.preload['thingy']
thingy.lua
no class 'thingy'
Run Code Online (Sandbox Code Playgroud)

这两个文件都存在于同一目录中,我可以使用SciTE(运行Lua 5.1)运行这两个脚本而不会出错.这似乎是一个路径问题,所以我尝试将package.path设置为源文件的绝对路径.

注意:我设置路径,而不是附加,以便我可以确定SciTE没有成功,因为现有的相对路径"?.lua".

我在LauJ(使用我自己的程序)和SciTE中进行了测试,发现SciTE能够执行test.lua,而LuaJ仍然无法执行,并且一如既往地产生相同的错误.

我应该在Java代码中做些什么(或者不做)可能导致这种情况?我已成功从Lua脚本访问Java,而不是其他 Lua脚本.只要我手动运行包含它们的脚本,我就可以访问LuaJ中的全局变量和函数.

好的方法是,这是我用来执行脚本的Java代码.

// some fancy Java code
public void execute() throws ScriptException, LuaError
{
    try
    {
        FileReader reader = new FileReader( filename );
        Script_Engine.eval( reader );
        reader.close();
    }
    catch( FileNotFoundException fnfe )
    {
        fnfe.printStackTrace();
    } …
Run Code Online (Sandbox Code Playgroud)

lua luaj

5
推荐指数
1
解决办法
1877
查看次数

标签 统计

lua ×1

luaj ×1