使用Erlang启动应用程序

时间:2012-01-09 14:20:55

标签: erlang

我想编写一个独立的Erlang应用程序,它可以像任何其他程序一样运行(通过单击.exe可执行文件)。就像Wings3D那样。

我该怎么办?什么是使它成为可能的最佳方法?我在Windows平台上,如果它很重要。

第二次更新:

好吧,我还没有导出promodb:start/0函数,这就是Erlang无法启动的原因(并且正如Muzaaya Joshua所说,werl -s不起作用)。但现在,我有另一个奇怪的问题。在我的rebar.config我有2个依赖项:

{deps, [
            {cowboy, ".*", {git, "https://github.com/extend/cowboy.git"}},
            {erlydtl, ".*", {git, "https://github.com/evanmiller/erlydtl.git"}}
        ]
}.

在我使用

启动Erlang之后
erl -pa ebin deps/cowboy/ebin deps/erlydtl/ebin deps/proper/ebin -s promodb

我通过应用程序找到:which_application()只启动了Cowboy:

[{cowboy,"Small, fast, modular HTTP server.","0.4.0"},
 {stdlib,"ERTS  CXC 138 10","1.18"},
 {kernel,"ERTS  CXC 138 10","2.15"}]

据我所知,Erlang应该启动我放在promodb.app文件中的所有必需应用程序,如:

{application, promodb,
 [
    {description, ""},
    {vsn, "0.1"},
    {registered, [promodb_sup]},
    {applications, [
                  kernel,
                  stdlib,
                  cowboy,
                  erlydtl
                 ]},
    {mod, { promodb, []}},
    {env, []}
 ]}.

我做错了什么?

4 个答案:

答案 0 :(得分:3)

我使用rebar escriptize来打包像rebar这样的独立包。然后你可以在linux中使用./PackageName或在windows中使用escript.exe PackageName

答案 1 :(得分:2)

我认为您需要按照documentation中的说明创建发布包和启动脚本。

答案 2 :(得分:1)

实际上-s选项无处不在。只需使用erl NOT werl 即可。 werl命令尝试在Windows上加载GUI。

BitRock Install Builder是您需要查看的绝佳工具。用Erlang编写的Yaws Web Server,使用它和许多其他应用程序。

答案 3 :(得分:1)

Erlydtl没有应用程序行为,它就像一个库。正如您在erlydtl示例中所看到的,不需要启动应用程序。

https://github.com/evanmiller/erlydtl#template-compilation

检查一下:

erl -pa ebin deps / * / ebin

1> erlydtl:compile(<<<" {{foo}}">>,my_module_name)。

有效吗?

我喜欢escriptize rebar选项来创建可执行文件。