luaj找不到.so模块

我用Java编写了一个GUI并使用了一个lua脚本来计算神经网络图像的一些值。因此,lua脚本需要torch7中的一些模块。 我已经找到了那些有init.lua文件的模块。然而,在一个模块只有.so文件的情况下它会失败。该模块是在其中一个init.lua文件中所需要的。 在我要求脚本中的模块之前,我设置了新的package.path和package.cpath到LUA_PATH和LUA_CPATH,因为luaj只使用了默认路径,这是不起作用的。

我认为这是一个LuaJ的问题,因为当我在终端中运行脚本时它能正常工作。

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。

我真的很感激任何帮助!

点赞
用户1686442
用户1686442

似乎LuaJ不能加载dll和so文件。 你可能想看看jnlua: https://code.google.com/archive/p/jnlua/

2016-02-23 18:34:16