如何在Erlang shell中运行Erlang应用程序

4

我有一个Erlang应用程序,可以使用basho rebar编译并运行它,生成一个独立的escript可执行文件。我可以通过命令行运行它,例如:./myapp myconfig.config

我的问题是如何在Erlang shell中运行它。这个应用程序有四个其他应用程序作为依赖项。Rebar很容易地编译所有这些应用程序。但是我需要从shell内部运行此应用程序,例如:

erl -noshell -name node1@machine -run test start parameter1 -s init stop;

但我不知道应该在哪个路径下运行它。当我尝试在"ebin"文件夹(beam文件所在的位置)中运行它时,依赖项无法访问。似乎每个依赖项应用程序都有自己的"ebin"文件夹。

那么,如何使用"erl -noshell"命令运行我的应用程序(考虑依赖项应用程序)?Rebar会自动处理所有这些事情。

1个回答

8
一般由Rebar管理的OTP应用程序的目录结构大致如下:
/
  src/
  ebin/
  deps/
    dep1/
      src/
      ebin/
    dep2/
      src/
      ebin/

如果你在项目的根目录中,可以使用-pa参数将erl指向正确的位置。为了告诉它应该在哪里找到你的应用程序和它的依赖项的BEAM文件,请尝试以下操作:

erl [...] -pa ebin -pa deps/*/ebin

谢谢!你的解决方案非常简单但完整且有用。 - Sepehr Samini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接