2014-08-29 3 views
1

У меня есть программа, использующая библиотеки Luaj 3.0, и я нашел некоторые сценарии lua, которые я хочу включить, но все они требуют файловой системы lua и penlight и всякий раз, когда я пытаюсь использовать эти библиотеки дают ошибку.Как загрузить Lua-Filesystem и Lua-Penlight в Luaj

Кто-нибудь знает, как я должен использовать тех, кто находится в Луаге?

Edit: Немного больше информации может помочь: У меня есть я 64bit система Archlinux с открытым jdk8 Luaj, Lua-файловая система, и Lua-пальчиковые установлен. Я нашел набор библиотек под названием Lua Java Utils, который я хочу включить в свой проект. Но он всегда получает эту ошибку:

@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 

Это требует библиотеку пальчиковые, которая в свою очередь, требует Lua файловой системы, поэтому я установил два. Я обнаружил через тестирование, что файловая система Lua не загружается, пытаясь запустить lfs.currentdir(). Я попробовал globals.load("local lfs = require \"lfs\"").call();, но также дал ошибку.

Моя библиотека Lfs находится по адресу /usr/lib/lua/5.2/lfs.so и penlight at /usr/share/lua/5.2/pl.

ответ

0

Это вопрос в Luaj 3.0 и 3.0 Luaj альфа 1.

Lua package.path игнорируется требуя при этом модуль. Here's a workout for this.

Вы можете переопределить функцию требуется:

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 
+0

Насколько я могу сказать, что ошибка была исправлена. В потоке, с которым вы связались, говорят, что они исправили это в бета-версии 1, и я посмотрел на источник, и похоже, что он использовал этот путь. – user2752635

+0

Я пробовал, и это не сработало. Как я должен использовать, так или иначе, поскольку всякий раз, когда я пытаюсь вызвать любой из этих файлов, я получаю сообщение об ошибке. – user2752635

+0

@ user2752635 из моего взгляда на официальную веб-страницу LuaJ. Нет поддержки для библиотек C/C++. Как вы уже определили выше, вы пытаетесь загрузить библиотеку UNIX, которая невозможна из LuaJ. Между LuaJ и C API нет никакой связи. 'Библиотеки закодированы так, чтобы точно соответствовать поведению, указанному в документации по стандарту lua, см. Подробную информацию об библиотечном API'. - Поскольку вы смотрите близко к проекту, библиотеки созданы так же, как LuaC API, но не LuaC. Не все библиотеки Lua API доступны для LuaJ. К сожалению, нет возможности загружать указанные библиотеки. – 111WARLOCK111

Смежные вопросы