2017-11-19 16 views
0

ここは新しいErlangです。私はrebar3を通してgitでホストされ、正常にコンパイルできたライブラリをロードしようとしています。今、Erlangアプリケーションを実行しようとすると、実際にライブラリモジュールの関数を指すmain関数を呼び出すと、シェル内にエラーがスローされます'module could not be loaded'Erlangに外部モジュールが搭載されていません

私はcode.get_path()を試しましたが、私のモジュールは記載されていません。だから私はここで混乱している。誰でもここで私を助けることができますか?

** Generic server <0.80.0> terminating 
** Last message in was {'DOWN',#Ref<0.1535589919.2261778436.90425>,process, 
           <0.79.0>,normal} 
** When Server state == {st_tcprx,<0.79.0>, 
            #Ref<0.1535589919.2261778436.90425>, 
            #Port<0.612>,<0.79.0>,<<>>,true,undefined} 
** Reason for termination == 
** {'module could not be loaded', 
     [{smpp34pdu,pack,[0,2147483647,{unbind}],[]}, 
     {smpp34_tcprx,terminate,2, 
      [{file, 
       "/home/antarix/IdeaProjects/smpp34/_build/default/lib/smpp34/src/mod/smpp34_tcprx.erl"}, 
      {line,69}]}, 
     {gen_server,try_terminate,3,[{file,"gen_server.erl"},{line,648}]}, 
     {gen_server,terminate,10,[{file,"gen_server.erl"},{line,833}]}, 
     {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]} 
** exception error: no match of right hand side value 
        {'EXIT', 
         {{undef, 
          [{smpp34pdu,pack, 
            [0,1, 
            {bind_transceiver,"simple","simple123",[], 
             52,0,0,[]}], 
            []}, 
           {smpp34_tx,handle_call,3, 
            [{file, 
             "/home/antarix/IdeaProjects/smpp34/_build/default/lib/smpp34/src/mod/smpp34_tx.erl"}, 
            {line,54}]}, 
           {gen_server,try_handle_call,4, 
            [{file,"gen_server.erl"},{line,636}]}, 
           {gen_server,handle_msg,6, 
            [{file,"gen_server.erl"},{line,665}]}, 
           {proc_lib,init_p_do_apply,3, 
            [{file,"proc_lib.erl"},{line,247}]}]}, 
         {gen_server,call, 
          [<0.77.0>, 
           {send,0, 
            {bind_transceiver,"simple","simple123",[], 
             52,0,0,[]}}]}}} 
    in function smpp34module:start/0 (/home/antarix/IdeaProjects/smpp34/_build/default/lib/smpp34/src/smpp34module.erl, line 43) 

は、ここに私のcode:get_path()出力

code:get_path(). 
["/home/antarix/IdeaProjects/smpp34", 
"/home/antarix/IdeaProjects/smpp34/_build/default/lib/smpp34/ebin", 
".","/usr/lib/erlang/lib/kernel-5.3.1/ebin", 
"/usr/lib/erlang/lib/stdlib-3.4.1/ebin", 
"/usr/lib/erlang/lib/xmerl-1.3.15/ebin", 
"/usr/lib/erlang/lib/wx-1.8.1/ebin", 
"/usr/lib/erlang/lib/tools-2.10.1/ebin", 
"/usr/lib/erlang/lib/syntax_tools-2.1.2/ebin", 
"/usr/lib/erlang/lib/ssl-8.2/ebin", 
"/usr/lib/erlang/lib/ssh-4.5.1/ebin", 
"/usr/lib/erlang/lib/snmp-5.2.6/ebin", 
"/usr/lib/erlang/lib/sasl-3.0.4/ebin", 
"/usr/lib/erlang/lib/runtime_tools-1.12.1/ebin", 
"/usr/lib/erlang/lib/reltool-0.7.4/ebin", 
"/usr/lib/erlang/lib/public_key-1.4.1/ebin", 
"/usr/lib/erlang/lib/parsetools-2.1.5/ebin", 
"/usr/lib/erlang/lib/otp_mibs-1.1.1/ebin", 
"/usr/lib/erlang/lib/os_mon-2.4.2/ebin", 
"/usr/lib/erlang/lib/orber-3.8.3/ebin", 
"/usr/lib/erlang/lib/odbc-2.12/ebin", 
"/usr/lib/erlang/lib/observer-2.4/ebin", 
"/usr/lib/erlang/lib/mnesia-4.15/ebin", 
"/usr/lib/erlang/lib/megaco-3.18.2/ebin", 
"/usr/lib/erlang/lib/jinterface-1.8/ebin", 
"/usr/lib/erlang/lib/inets-6.4/ebin", 
"/usr/lib/erlang/lib/ic-4.4.2/ebin", 
"/usr/lib/erlang/lib/hipe-3.16/ebin", 
[...]|...] 

。注:私はあなたが間違った方法でsmpp34pduをプールしているように見えます私のコード

+0

'' smpp34pdu.beam'が '_build/default/lib/smpp34/bin /'にコンパイルされていることを確認できますか?そして、あなたは "モジュールはリストされていません"と言っていますが、 'code:get_path'はディレクトリのみをリストするので、' _build/default/lib/smpp34/bin/'はリストされていますか? – mpm

+0

'smpp34pdu.beam'は' _build/default/lib/smpp34pdu/ebin'にコンパイルされています。ここで 'smpp34pdu'はgitのリモートライブラリです – Antarix

+0

質問を編集して' code_get_path'の戻り値を追加できますか? – mpm

答えて

0

を書き込むためIntellijを使用しています。それはsmpp34に依存するはずですが、なんらかの理由でそうではありません。最も簡単な解決策は、にあなたのdepsにsmpp34pduを追加することです。

smpp34も7歳のライブラリです。rebar3やErlangの最新バージョン(使用している場合)との互換性の問題が予想される場合があります。両方のリポジトリを自分のGithHubアカウントにクローニングし、発生したすべての問題を修正/修正することをお勧めします。 configをrebar3にアップグレードし、smpp34に依存としてsmpp34pduを追加することができます。

+0

'smpp34'の' rebar.config'にdepsとして 'smpp34pdu'があります。 – Antarix

関連する問題