2012-08-04 121 views
1

我有钢筋下捆绑一个Erlang的应用程序(目前只有几个库模块)。目录结构如下所示:神秘行为壳

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

MyProject $ ./rebar compile按预期作出响应。

我打开了Erlang的外壳(MyProject的$ ERL-PA应用/ */EBIN MYAPP),并可以执行导出功能就好了。

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

我删除相关的* .beam文件并重新编译。仍然无法看到我的变化。

但是,现在我Q()从二郎壳并重新输入的。你知道什么!一切正常,包括我的新功能。

为什么会这样?

非常感谢,

LRP

回答

5

你怎么重新编译?从壳还是如何?

请注意,如果你重新编译文件“外”的执行二郎的,那么你将明确地重新加载的外壳模块(带l(myAppModule).)。如果您从shell重新编译(使用c(myAppModule).),那么模块将被重新编译并重新加载,但.beam文件不会被放入ebin目录中,但将位于当前工作目录中。

+0

我从项目目录编译:./rebar compile。所以我会给l(myAppModule)方法一个尝试。 – 2012-08-06 00:34:52

+0

这样做!非常感谢,罗伯特! – 2012-08-06 01:07:22