Simple OTP Application error

View: New views
3 Messages — Rating Filter:   Alert me  

Simple OTP Application error

by andrea.dipersio :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi!

I'm trying to build a simple otp application to dive deeper in erlang.

I'm following the example in Joe Armstrong 'Programmin Erlang'  and I
also tried with some example on the web but I can't make it work
correctly.

The application load correctly but when I run application:start
(appname) I get this error:

application: hda
    exited: {bad_return,
                {{hda_app,start,[normal,[]]},
                 {'EXIT',
                     {undef,
                         [{hda_app,start,[normal,[]]},
                          {application_master,start_it_old,4}]}}}}
    type: temporary
{error,{bad_return,{{hda_app,start,[normal,[]]},
                    {'EXIT',{undef,[{hda_app,start,[normal,[]]},
                                    {application_master,start_it_old,
4}]}}}}}



If I run the supervisor alone, it work correctly.



This is my   _app file:

-module(hda_app).
-behaviour(application).
-export([start/2, stop/1]).



start(_Type, _Args) ->
    hda_supervisor:start_link().


stop(_State) ->
    ok.



This is my .app file:

{application, hda,
 [{description, "Help Desk Assistant"},
  {vsn, "1.0"},
  {modules, [hda_app, hda_supervisor, customer_server,
hda_alarm_handler]},
  {registered, [customer_server]},
  {applications, [kernel, stdlib, sasl]},
  {mod, {hda_app, []}}
 ]}.


This is my supervisor:


-module(sellaprime_supervisor).
-behaviour(supervisor). % see erl -man 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,?MODULE}, ?MODULE, _Arg =
[]),
    unlink(Pid).


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


init([]) ->
    %% Install my personal error handler
    gen_event:swap_handler(alarm_handler,
                           {alarm_handler, swap},
                           {my_alarm_handler, xyz}),
                           {ok, {{one_for_one, 3, 10},

    {ok, {{one_for_one, 3, 10},
          [{tag1,
            {customer_server, start_link, []},
             permanent,
             10000,
             worker,
             [customer_server]}
          ]}}.



Best regards,
Andrea.

________________________________________________________________
erlang-questions mailing list. See http://www.erlang.org/faq.html
erlang-questions (at) erlang.org


Re: Simple OTP Application error

by Ulf Wiger-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


The 'undef' part of the error means that erlang
couldn't find the function hda_app:start/2.

Check that your module has been compiled and is
accessible via the code path.

BR,
Ulf W

Andrea Di Persio wrote:

> Hi!
>
> I'm trying to build a simple otp application to dive deeper in erlang.
>
> I'm following the example in Joe Armstrong 'Programmin Erlang'  and I
> also tried with some example on the web but I can't make it work
> correctly.
>
> The application load correctly but when I run application:start
> (appname) I get this error:
>
> application: hda
>     exited: {bad_return,
>                 {{hda_app,start,[normal,[]]},
>                  {'EXIT',
>                      {undef,
>                          [{hda_app,start,[normal,[]]},
>                           {application_master,start_it_old,4}]}}}}
>     type: temporary
> {error,{bad_return,{{hda_app,start,[normal,[]]},
>                     {'EXIT',{undef,[{hda_app,start,[normal,[]]},
>                                     {application_master,start_it_old,
> 4}]}}}}}
>
>
>
> If I run the supervisor alone, it work correctly.
>
>
>
> This is my   _app file:
>
> -module(hda_app).
> -behaviour(application).
> -export([start/2, stop/1]).
>
>
>
> start(_Type, _Args) ->
>     hda_supervisor:start_link().
>
>
> stop(_State) ->
>     ok.
>
>
>
> This is my .app file:
>
> {application, hda,
>  [{description, "Help Desk Assistant"},
>   {vsn, "1.0"},
>   {modules, [hda_app, hda_supervisor, customer_server,
> hda_alarm_handler]},
>   {registered, [customer_server]},
>   {applications, [kernel, stdlib, sasl]},
>   {mod, {hda_app, []}}
>  ]}.
>
>
> This is my supervisor:
>
>
> -module(sellaprime_supervisor).
> -behaviour(supervisor). % see erl -man 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,?MODULE}, ?MODULE, _Arg =
> []),
>     unlink(Pid).
>
>
> start_link(Args) ->
>     supervisor:start_link({local,?MODULE}, ?MODULE, Args).
>
>
> init([]) ->
>     %% Install my personal error handler
>     gen_event:swap_handler(alarm_handler,
>                            {alarm_handler, swap},
>                            {my_alarm_handler, xyz}),
>                            {ok, {{one_for_one, 3, 10},
>
>     {ok, {{one_for_one, 3, 10},
>           [{tag1,
>             {customer_server, start_link, []},
>              permanent,
>              10000,
>              worker,
>              [customer_server]}
>           ]}}.
>
>
>
> Best regards,
> Andrea.
>
> ________________________________________________________________
> erlang-questions mailing list. See http://www.erlang.org/faq.html
> erlang-questions (at) erlang.org
>


--
Ulf Wiger
CTO, Erlang Training & Consulting Ltd
http://www.erlang-consulting.com

________________________________________________________________
erlang-questions mailing list. See http://www.erlang.org/faq.html
erlang-questions (at) erlang.org


Re: Simple OTP Application error

by andrea.dipersio :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bingo!
I didn't compiled all the application file.

Now it work like a charm!


Thank you very much!

On Jul 2, 8:08 pm, Ulf Wiger <ulf.wi...@...> wrote:

> The 'undef' part of the error means that erlang
> couldn't find the function hda_app:start/2.
>
> Check that your module has been compiled and is
> accessible via the code path.
>
> BR,
> Ulf W
>
>
>
>
>
> Andrea Di Persio wrote:
> > Hi!
>
> > I'm trying to build a simple otp application to dive deeper in erlang.
>
> > I'm following the example in Joe Armstrong 'Programmin Erlang'  and I
> > also tried with some example on the web but I can't make it work
> > correctly.
>
> > The application load correctly but when I run application:start
> > (appname) I get this error:
>
> > application: hda
> >     exited: {bad_return,
> >                 {{hda_app,start,[normal,[]]},
> >                  {'EXIT',
> >                      {undef,
> >                          [{hda_app,start,[normal,[]]},
> >                           {application_master,start_it_old,4}]}}}}
> >     type: temporary
> > {error,{bad_return,{{hda_app,start,[normal,[]]},
> >                     {'EXIT',{undef,[{hda_app,start,[normal,[]]},
> >                                     {application_master,start_it_old,
> > 4}]}}}}}
>
> > If I run the supervisor alone, it work correctly.
>
> > This is my   _app file:
>
> > -module(hda_app).
> > -behaviour(application).
> > -export([start/2, stop/1]).
>
> > start(_Type, _Args) ->
> >     hda_supervisor:start_link().
>
> > stop(_State) ->
> >     ok.
>
> > This is my .app file:
>
> > {application, hda,
> >  [{description, "Help Desk Assistant"},
> >   {vsn, "1.0"},
> >   {modules, [hda_app, hda_supervisor, customer_server,
> > hda_alarm_handler]},
> >   {registered, [customer_server]},
> >   {applications, [kernel, stdlib, sasl]},
> >   {mod, {hda_app, []}}
> >  ]}.
>
> > This is my supervisor:
>
> > -module(sellaprime_supervisor).
> > -behaviour(supervisor). % see erl -man 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,?MODULE}, ?MODULE, _Arg =
> > []),
> >     unlink(Pid).
>
> > start_link(Args) ->
> >     supervisor:start_link({local,?MODULE}, ?MODULE, Args).
>
> > init([]) ->
> >     %% Install my personal error handler
> >     gen_event:swap_handler(alarm_handler,
> >                            {alarm_handler, swap},
> >                            {my_alarm_handler, xyz}),
> >                            {ok, {{one_for_one, 3, 10},
>
> >     {ok, {{one_for_one, 3, 10},
> >           [{tag1,
> >             {customer_server, start_link, []},
> >              permanent,
> >              10000,
> >              worker,
> >              [customer_server]}
> >           ]}}.
>
> > Best regards,
> > Andrea.
>
> > ________________________________________________________________
> > erlang-questions mailing list. Seehttp://www.erlang.org/faq.html
> > erlang-questions (at) erlang.org
>
> --
> Ulf Wiger
> CTO, Erlang Training & Consulting Ltdhttp://www.erlang-consulting.com
>
> ________________________________________________________________
> erlang-questions mailing list. Seehttp://www.erlang.org/faq.html
> erlang-questions (at) erlang.org

________________________________________________________________
erlang-questions mailing list. See http://www.erlang.org/faq.html
erlang-questions (at) erlang.org