Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Luaj中加载Lua文件系统和Lua Penlight_Java_Lua_Luaj_Luajava_Luafilesystem - Fatal编程技术网

Java 如何在Luaj中加载Lua文件系统和Lua Penlight

Java 如何在Luaj中加载Lua文件系统和Lua Penlight,java,lua,luaj,luajava,luafilesystem,Java,Lua,Luaj,Luajava,Luafilesystem,我有一个使用Luaj 3.0库的程序,我找到了一些我想包含的lua脚本,但它们都需要lua文件系统和penlight,每当我尝试使用这些库时,它都会给出一个错误 有人知道我应该如何利用Luaj的那些吗 编辑: 多了解一些信息可能会有所帮助: 我已经安装了一个ArchLinux64位系统,带有open-jdk8 Luaj、lua文件系统和lua penlight。我发现了一组名为的库,我想将其包含在我的项目中。但它总是会出现这样的错误: @luaJavaUtils/import.lua:24 in

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

有人知道我应该如何利用Luaj的那些吗

编辑: 多了解一些信息可能会有所帮助: 我已经安装了一个ArchLinux64位系统,带有open-jdk8 Luaj、lua文件系统和lua penlight。我发现了一组名为的库,我想将其包含在我的项目中。但它总是会出现这样的错误:

@luaJavaUtils/import.lua:24 index expected, got nil
第24行供参考:

local function import_class (classname,packagename)
    local res,class = pcall(luajava.bindClass,packagename)
    if res then
        _G[classname] = class
        local mt = getmetatable(class)
        mt.__call = call -- <----- Error Here
        return class
    end
end
本地函数导入\u类(类名,packagename)
本地res,class=pcall(luajava.bindClass,packagename)
如果是的话
_G[classname]=类
本地mt=getmetatable(类)
mt.uu call=call--这是Luaj 3.0和Luaj 3.0 alpha 1中的一个问题

需要模块时忽略lua package.path

您可以覆盖require函数:

local oldReq = require

function require(f)
    local fi = io.open(f, "r")
    local fs = f
    if not fi then
        fi = io.open(f .. ".lua", "r")
        fs = f .. ".lua"
        if not fi then
            error("Invalid module " .. f)
            return
        end
    end
    local l = loadfile(fs)
    if not l then
        return oldReq(f)
    end
    return l()
end

据我所知,这个bug已经修复了。在你链接到的线程中,他们说他们在beta 1中修复了这个问题,我查看了源代码,它看起来像是在使用路径。我尝试了一下,但没有成功。无论如何,我应该如何使用require,因为每当我试图直接调用这些文件时,我都会遇到一个错误。@user2752635从我查看LuaJ的官方网页时,发现不支持C/C++库,正如您在上面定义的,您正在尝试加载一个UNIX库,而LuaJ无法加载该库。LuaJ和C API之间没有连接<代码>库被编码为与标准lua文档中指定的行为紧密匹配,以获取库API的详细信息
——在仔细查看项目时,库被设计成与LuaC API相似,但与LuaC it本身不同。并非所有luaapi库都可用于LuaJ。很遗憾,无法加载操作系统指定的库。