我正在做一些奇怪的事情,导致这个错误.
以下简单示例失败:
--> 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)