在类路径上要求文件

我正在使用LuaJ从Java运行Lua脚本。在类路径中加载Lua文件很好,但是当从不同的Lua文件中导入其中一个文件时,它会说该文件不存在。我的Lua文件非常基础:

-- 这两个文件都在以下位置的.jar文件中
-- MyProgram.jar/
--   com/my/program/
--     FirstFile.lua
--     OtherFile.lua

-- FirstFile.lua
local thing = require("com.my.program.OtherFile");
print(thing);

-- OtherFile.lua
return 42;

我的package.path设置为?.lua(LuaJ中的默认设置)。这是我如何从Java加载文件的方式:

Globals _G = JsePlatform.standardGlobals();
final Reader scriptFile = new InputStreamReader(Program.class.getResourceAsStream("FirstFile.lua"));
LuaValue script = _G.loadFile(scriptFile, "FirstFile.lua");
script.call(); // 运行它

这会找到文件,但在执行期间它会崩溃并出现以下错误:

module 'com.my.program.OtherFile' not found
    no field package.preload['com.my.program.OtherFile'] // 预期
    com\my\program\OtherFile.lua // 这很奇怪,因为该文件肯定存在(我可以从Java运行它)
    no class 'com.my.program.OtherFile' // 预期

我被难住了。我知道以前我已经让它起作用过,但我不记得我是怎么做到的。

点赞