2013-12-13 21 views
1

這是我.erlang文件:代碼:add_path和在命令行上使用-pa有什麼區別?

code:add_path("/home/root/projects/myapp/ebin"). 
code:add_path("/home/root/projects/esmtp/ebin"). 
application:load(esmtp), 
application:set_env(esmtp, smarthost, {"localhost",25}), 
application:set_env(esmtp, default_from, "<stuff>"), 
application:start(esmtp). 

當我運行:

erl -boot myapp 

失敗:

{"init terminating in do_boot",{'cannot get bootfile','myapp.boot'}} 

Crash dump was written to: erl_crash.dump 
init terminating in do_boot() 

但是,如果我運行:

erl -boot myapp -pa /home/root/projects/myapp/ebin 

它工作正常。這讓我相信,在命令行上的-pa與在.erlang文件中的代碼:add_path()不同。我知道.erlang文件是有效的,因爲esmtp加載並正確運行。 -pa和code:add_path()有什麼區別?

回答

4

在引導文件被加載後,.erlang文件被讀取並執行,所以當erlang正在查找引導文件時,路徑尚未被添加。

另一方面-pa在vm開始查找引導文件之前添加,然後找到它。

+0

非常好,謝謝。 –

相關問題