这是我的.erlang文件:
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
工作正常。这让我相信命令行上的-paa与.erlang文件中的代码:add_path()不同。我知道.erlang文件有效,因为esmtp加载并正确运行。 -pa和代码有什么区别:add_path()?
答案 0 :(得分:4)
加载启动文件后会读取并执行.erlang文件,因此当erlang查找启动文件时,路径尚未添加。
另一方面,在vm开始寻找引导文件之前添加-pa,然后找到它。