设置:IntelliJ IDEA 2022.2.2,Erlang 25.0
我正在尝试运行https://erlangbyexample.org/send-receive上提供的Erlang代码。我能够在Werl和Windows命令行中运行。但是当我在IntelliJ中运行时,我收到错误“init Terminating in do_boot”。
我检查了this question中报告的类似问题,其中的解决方案是将列表输入转换为整数/s。然而,我的Erlang代码不需要任何输入,它只需要函数名。
请提供解决该问题的指针。
"C:Program FilesErlang OTPbinerl.exe" -pa F:/1TB/P/workspace-IntelliJ-Erlang1/out/production/workspace-IntelliJ-Erlang1 -pa F:/1TB/P/workspace-IntelliJ-Erlang1 -eval send_recv:run(). -s init stop -noshell
{"init terminating in do_boot",{undef,[{send_recv,run,[],[]},{erl_eval,do_apply,7,[{file,"erl_eval.erl"},{line,744}]},{init,start_it,1,[{file,"init.erl"},{line,1234}]},{init,start_em,1,[{file,"init.erl"},{line,1220}]},{init,do_boot,3,[{file,"init.erl"},{line,910}]}]}}
init terminating in do_boot ({undef,[{send_recv,run,[],[]},{erl_eval,do_apply,7,[{_},{_}]},{init,start_it,1,[{_},{_}]},{init,start_em,1,[{_},{_}]},{init,do_boot,3,[{_},{_}]}]})
Crash dump is being written to: erl_crash.dump...done
2条答案
按热度按时间snvhrwxg1#
检查在
-pa
参数中指定为代码路径的任一目录中是否存在名为send_recv.beam
的文件。(undef
错误意味着它找不到函数send_recv:run/0
,这通常是因为它找不到编译后的模块。)我猜测这个文件实际上位于您从命令提示符运行Erlang的目录中,但IntelliJ使用另一个工作目录运行Erlang。默认情况下,当前工作目录是代码路径的一部分,这就是为什么它在命令提示符下工作,而不是在IntelliJ内工作。
kmpatx3s2#
我将RunConfiguration配置为运行前构建(“启动前”一节)。因此,如果文件夹不存在,运行配置将创建一个没有.Beam文件的空文件夹“../out/production/workspace-IntelliJ-Erlang1”。如果文件夹存在,它将删除任何现有的.Beam文件。因此,这场竞选最终失败了。
作为一种解决办法,我从RunConfiguration中删除了运行前构建选项。而且,在运行配置之前,我使用BuildProject手动构建。
TODO:我将检查为什么RunConfiguration无法生成.Beam文件。