IntelliJ抛出“init Terminating in do_boot”,但同样的erl命令在Windows命令行中也有效

d8tt03nd  于 2022-10-07  发布在  Windows
关注(0)|答案(2)|浏览(259)

设置: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

snvhrwxg

snvhrwxg1#

检查在-pa参数中指定为代码路径的任一目录中是否存在名为send_recv.beam的文件。(undef错误意味着它找不到函数send_recv:run/0,这通常是因为它找不到编译后的模块。)

我猜测这个文件实际上位于您从命令提示符运行Erlang的目录中,但IntelliJ使用另一个工作目录运行Erlang。默认情况下,当前工作目录是代码路径的一部分,这就是为什么它在命令提示符下工作,而不是在IntelliJ内工作。

kmpatx3s

kmpatx3s2#

我将RunConfiguration配置为运行前构建(“启动前”一节)。因此,如果文件夹不存在,运行配置将创建一个没有.Beam文件的空文件夹“../out/production/workspace-IntelliJ-Erlang1”。如果文件夹存在,它将删除任何现有的.Beam文件。因此,这场竞选最终失败了。

作为一种解决办法,我从RunConfiguration中删除了运行前构建选项。而且,在运行配置之前,我使用BuildProject手动构建。

TODO:我将检查为什么RunConfiguration无法生成.Beam文件。

相关问题