将路径添加到Erlang搜索路径中?

11

我最近使用Debian软件包安装了Erlang RFC4627(JSON-RPC)。我使用以下命令运行了测试服务器:

sudo erl -pa ebin

然后在提示符下:

test_jsonrpc:start_httpd().

返回

ok

我测试了 http://:5671/ 并收到了成功的消息。

然而,当我尝试运行 rabbitmq-http2 时,我收到了错误信息,这些错误是由于 rfc4627 的代码未在 erlang 搜索路径上导致的。我该如何将其添加到路径中。我看到 Dave Thomas 的博客上有一些建议,建议将路径放在文件中:

~/.erlang

这对我似乎没有起作用(也许是我做错了?)。


Gordon,感谢您下面的回答(我投了赞成票)。不幸的是,我已经尝试过几种方法,包括.erlang文件和在make文件中应用路径到-pa。我想我的问题更加特别,与rfc4627和rabbitmq-http2有关。 - David
请添加有关目录路径和如何将路径添加到代码服务器中的梁的更多信息。特别是,您在哪里拥有rfc4627库的梁? - Christian
Christian,实际上,我已经把这个全部搞定了,我一直想回复你并解释一些我所做的事情。我可能会在本周晚些时候完成这个回复。 - David
1个回答

20

code模块是您在应用程序中操作路径的方式。

您在启动Erlang shell时使用的 -pa 标志实际上指的是此模块中的一个函数:

add_patha(Dir) -> true | {error, What}

关于在您的主目录中的 .erlang 文件,您是正确的 - 它在shell启动时运行,并且您可以添加有用的路径。

对于一个应用程序,您可以使用一个批处理文件来启动shell,并调用类似以下内容的东西:

erl -pa ./ebin ../../lib/some/path/ebin

关于erl的标志行为,可以在这里找到说明。

如果您需要更复杂的路径管理,您需要熟悉如何进行OTP发布管理(但我怀疑这对您来说还需要一段时间)。


如上所述,我不需要这样做,但这是一个很好的答案! - David
".erlang"文件的格式是什么?或者更好的做法是,在哪里可以找到相关文档? - Masse
它接受Erlang术语,并像在shell中输入一样进行评估。请参阅此处的1.7.1章节 http://www.erlang.org/documentation/doc-5.2/doc/getting_started/getting_started.html - Gordon Guthrie

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