程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Erlang:使用主管启动sellaprime应用程序返回undef错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Erlang:使用主管启动sellaprime应用程序返回undef错误?

开发过程中遇到Erlang:使用主管启动sellaprime应用程序返回undef错误的问题如何解决?下面主要结合日常开发的经验,给出你关于Erlang:使用主管启动sellaprime应用程序返回undef错误的解决方法建议,希望对你解决Erlang:使用主管启动sellaprime应用程序返回undef错误有所启发或帮助;

尝试运行编程 erlang 书中的示例应用程序,sellaprime 应用程序。我使用主管内的测试功能测试了主管代码。所以,主管应该没问题。应用程序已加载,但应用程序启动遇到以下错误:

=INFO REPORT==== 31-May-2021::22:39:44.235167 ===
application: sellaprime
exited: {Bad_return,{{sellaprime_app,start,[normal,[]]},{'EXIT',{undef,[{sellaprime_app,[]],[]},{application_master,start_supervisor,3,[{file,"application_master.erl"},{line,331}]},start_the_app,5,313}]},start_it_new,7,299}]}]}}}}
type: temporary

需要帮助定位错误。 这是文件,sellaprime_app.erl

-module(sellaprime_app).
-behavIoUr(application).
-export([start/2,stop/1]).

start(_Type,StartArgs) -> sellaprime_supervisor:start_link(StartArgs).
stop(_StatE) -> ok.

sellaprime_supervisor.erl

-module(sellaprime_supervisor).
-behavIoUr(supervisor).

-export([start/0,start_in_sHell_for_tesTing/0,start_link/1,init/1]).

start() -> 
    spawn(fun() -> supervisor:start_link({local,?MODulE},?MODulE,_Arg=[]) end).
start_in_sHell_for_tesTing() -> 
    {ok,PID} = supervisor:start_link({local,_Arg=[]),unlink(PID).

start_link(Args) -> 
    supervisor:start_link({local,Args).

init([]) ->
    gen_event:swap_handler(alarm_handler,{alarm_handler,swap},{my_alarm_handler,xyz}),{ok,{{one_for_one,10},[{tag1,{area_server,start_link,peRMANent,10000,worker,[area_server]},{tag2,{prime_server,[prime_server]}
        ]}}.

解决方法

这个:

{'EXIT',{undef,[{sellaprime_app,start,[normal,[]],[]},

是说有一个 undef 错误,即在模块 sellaprime_app 中没有定义名为 start() 的函数,它接受两个参数:[normal,[]]。但是,如果您查看您的 sellaprime_app.erl,显然有一个名为 start() 的函数,它被定义为接受任意两个参数。怎么回事?

问题是书中没有指导你编译文件sellaprime_app.erl来创建所需的.beam文件,所以erlang找不到里面的函数。您将遇到与所有其他源文件相同的问题。您可以使用命令行编译目录中的所有 .erl 文件,如下所示:

$ erlc *.erl

执行此操作后,您将在目录中看到 .beam 文件。然后你可以这样做:

$ erl -boot start_sasl -config elog3

...接下来是书中显示的其余命令。

rebar3 之类的工具负责为您完成所有编译工作,并将 .beam 文件组织到其他目录中并添加它们的路径,但是当您手动运行应用程序时则不会发生这种情况。

大佬总结

以上是大佬教程为你收集整理的Erlang:使用主管启动sellaprime应用程序返回undef错误全部内容,希望文章能够帮你解决Erlang:使用主管启动sellaprime应用程序返回undef错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。