luaj не находит.so модули
Я написал графический интерфейс на Java и использую lua-скрипт для вычисления некоторых значений для изображений с нейронной сетью. Поэтому для lua-скрипта требуются модули из torch7. Я так далеко, что он находит модули, которые имеют файл init.lua. Тем не менее, это происходит сбой, когда модуль имеет только.so-файл. Модуль требуется в одном из файлов init.lua. Прежде чем мне потребуются модули в сценарии, я установил для новых package.path и package.cpath значения LUA_PATH и LUA_CPATH, потому что luaj использовал только путь по умолчанию, который не работал.
Я думаю, что это проблема LuaJ, потому что когда я запускаю скрипт в терминале с lua script_name.lua, он работает нормально.
package.path = package.path .. ';/home/user/.luarocks/share/lua/5.1
/?.lua;/home/user/.luarocks/share/lua/5.1/?/init.lua;/home/user/torch
/install/share/lua/5.1/?.lua;/home/user/torch/install/share/lua/5.1
/?/init.lua;./?.lua;/home/user/torch/install/share/luajit-2.1.0-
beta1/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1
/?/init.lua'
package.cpath = '/home/user/torch/install/lib/?.so;/home/user/.luarock
/lib/lua/5.1/?.so;/home/user/torch/install/lib/lua/5.1/?.so;./?.so;
/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so'
require 'torch'
require 'nn'
require 'image'
Сообщение об ошибке выглядит следующим образом:
exception in thread "main" org.luaj.vm2.LuaError: @/home/user/torch/install/share/lua/5.1/paths/init.lua:1 module 'libpaths' not found: libpaths
no field package.preload['libpaths']
libpaths.lua
/home/user/.luarocks/share/lua/5.1/libpaths.lua
/home/user/.luarocks/share/lua/5.1/libpaths/init.lua
/home/user/torch/install/share/lua/5.1/libpaths.lua
/home/user/torch/install/share/lua/5.1/libpaths/init.lua
./libpaths.lua
/home/user/torch/install/share/luajit-2.1.0-beta1/libpaths.lua
/usr/local/share/lua/5.1/libpaths.lua
/usr/local/share/lua/5.1/libpaths/init.lua
no class 'libpaths'
Я вызываю скрипт из моей Java-программы:
public ScoreImage(){
G_ = JsePlatform.standardGlobals();
//G_.get("dofile").call( LuaValue.valueOf(changePath_));
G_.get("dofile").call( LuaValue.valueOf(script_));
}
Я использую lua 5.1, потому что некоторые проблемы были решены путем перехода с lua 5.2 на lua 5.1. У меня есть Ubuntu 14.04 LTS и luaj 3.0.1.
Я действительно ценю любую помощь!
1 ответ
Кажется, что LuaJ не имеет возможности загружать DLL-файлы и другие файлы. Вы можете посмотреть jnlua: https://code.google.com/archive/p/jnlua/