【问题标题】:What's the difference between code:add_path and using -pa on the command line?code:add_path 和在命令行上使用 -pa 有什么区别?
【发布时间】:2013-12-14 01:32:22
【问题描述】:

这是我的 .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

它工作正常。这使我相信命令行上的 -pa 与 .erlang 文件中的 code:add_path() 的处理方式不同。我知道 .erlang 文件有效,因为 esmtp 加载并正确运行。 -pa 和 code:add_path() 有什么区别?

【问题讨论】:

    标签: erlang erlang-otp


    【解决方案1】:

    .erlang文件是在加载启动文件后读取并执行的,所以erlang在寻找启动文件时并没有添加路径。

    另一方面,-pa 是在 vm 开始查找引导文件之前添加的,以便找到它。

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2023-01-26
      • 1970-01-01
      • 2023-03-05
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多