Llo*_*ice 1 erlang erlang-shell rebar
我在Rebar下捆绑了一个Erlang应用程序(现在只有几个库模块).目录结构如下所示:
MyProject
- apps
-- myapp
--- ebin
--- src
--- yada
- rebar
- rebar.conf
Run Code Online (Sandbox Code Playgroud)
MyProject $ ./rebar编译按预期响应.
我打开了Erlang shell(MyProject $ erl -pa apps/*/ebin myapp)并且可以执行导出的函数.
现在我编辑源文件,添加导出的函数,然后重新编译.但是,whaaa ---当我尝试执行我的新导出函数时,我得到一个错误---未定义的函数.我在Erlang shell中执行myAppModule:module_info/0.它没有列出我刚添加到源文件中的新函数,也没有列出我对其他函数所做的更改.
我删除相关的*.beam文件并重新编译.还是看不出我的变化.
但是,现在我从Erlang shell中获取q()并重新输入.你知道什么!一切正常,包括我的新功能.
为什么会这样?
非常感谢,
LRP
你怎么重新编译?从shell还是怎么样?
请注意,如果您重新编译执行erlang的"外部"文件,那么您将明确地必须l(myAppModule).
在shell中重新加载模块(带有a ).如果从shell重新编译(带有a c(myAppModule).
),则将重新编译并重新加载模块,但该.beam
文件不会放在ebin
目录中,而是位于当前工作目录中.