尝试在Erlang / OTP中使用rebar在一个简单的发布包中测试msgpack作为依赖项。
我的文件夹结构如下
项目 - >应用 - > myapp - > EBIN - > SRC
-> deps -> msgpack (folder) -> rebar (exe) -> rebar config -> rel -> reltool.config -> files (folder) -> mynode (folder)
该功能的代码片段&它的handle_call:
num_pokes() ->
gen_server:call(?MODULE, num_pokes).
handle_call(num_pokes, _From, State = #state{ num_pokes = PokeCount }) ->
MP = msgpack:pack(PokeCount),
io:format (" Message is packed : ~p~n", MP),
MuP = msgpack:unpack_stream(MP),
io:format (" Message is now UNpacked : ~p~n", MuP),
io:format (" Pokecount : ~p~n", PokeCount),
{reply, PokeCount, State};
错误显示:调用num_pokes()时
=ERROR REPORT==== 10-Apr-2015::12:44:53 ===
** Generic server myapp_server terminating
** Last message in was num_pokes
** When Server state == {state,2}
** Reason for termination ==
** {'module could not be loaded',
[{msgpack,pack,[2],[]},
{myapp_server,handle_call,3,[{file,"src/myapp_server.erl"},{line,32}]},
{gen_server,try_handle_call,4,[{file,"gen_server.erl"},{line,607}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,639}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]}
** exception exit: {{undef,
[{msgpack,pack,[2],[]},
{myapp_server,handle_call,3,
[{file,"src/myapp_server.erl"},{line,32}]},
{gen_server,try_handle_call,4,
[{file,"gen_server.erl"},{line,607}]},
{gen_server,handle_msg,5,
[{file,"gen_server.erl"},{line,639}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,237}]}]},
{gen_server,call,[myapp_server,num_pokes]}}
in function gen_server:call/2 (gen_server.erl, line 182)
答案 0 :(得分:0)
将-pa deps/msgpack/ebin
作为命令行参数传递给erl。然后它会找到已编译的模块。
答案 1 :(得分:0)
指向mspack的文件夹结构由我显示为./deps(依赖项文件夹)。它应该是./deps/msgpack