首页 文章

Erlang shell的神秘行为

提问于
浏览
1

我在Rebar下捆绑了一个Erlang应用程序(现在只有几个库模块) . 目录结构如下所示:

MyProject  
- apps  
-- myapp  
--- ebin  
--- src  
--- yada   
- rebar  
- rebar.conf

MyProject $ ./rebar编译按预期响应 .

我打开了Erlang shell(MyProject $ erl -pa apps / * / ebin myapp)并且可以执行导出的函数 .

现在我编辑源文件,添加导出的函数,然后重新编译 . 但是,whaaa ---当我尝试执行我的新导出函数时,我得到一个错误---未定义的函数 . 我在Erlang shell中执行myAppModule:module_info / 0 . 它没有列出我刚添加到源文件中的新函数,也没有列出我对其他函数所做的更改 .

我删除相关的* .beam文件并重新编译 . 还是看不出我的变化 .

但是,现在我从Erlang shell中获取q()并重新输入 . 你知道什么!一切正常,包括我的新功能 .

为什么会这样?

非常感谢,

LRP

1 回答

  • 5

    你怎么重新编译?从shell还是怎么样?

    请注意,如果重新编译正在执行的erlang的文件"outside",那么您将明确地必须在shell中重新加载模块(带有 l(myAppModule). ) . 如果从shell重新编译(使用 c(myAppModule). ),则将重新编译并重新加载模块,但 .beam 文件不会放在 ebin 目录中,而是位于当前工作目录中 .

相关问题