IntelliJ运行Erlang代码报‘init terminating in do_boot’错误求助
Erlang代码在IntelliJ中执行报错的解决思路
环境
- IntelliJ IDEA 2022.2.2
- Erlang 25.0
问题概述
某实现send-receive逻辑的Erlang代码,在werl和Windows命令行中可正常运行,但在IntelliJ中执行时抛出init terminating in do_boot错误。该代码无需外部输入,仅需调用send_recv:run()函数即可执行。
执行命令
"C:\Program Files\Erlang OTP\bin\erl.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
解决思路
- 检查编译状态:确认IntelliJ已完成
send_recv.erl的编译,查看out/production目标目录下是否生成了send_recv.beam字节码文件。若未编译,执行Build -> Build Project手动触发编译。 - 验证路径有效性:命令中
-pa参数指定的路径是否准确指向包含.beam文件的目录。可手动进入该路径确认文件存在,或尝试将路径改为Windows标准的反斜杠格式(如F:\1TB\P\workspace-IntelliJ-Erlang1\out\production\workspace-IntelliJ-Erlang1),避免斜杠格式差异导致的路径识别问题。 - 核对IntelliJ运行配置:检查Erlang运行配置中的“Beam directory”是否正确指向编译输出目录;确认“Run function”设置为
send_recv:run(),无多余空格或语法错误。 - 确认模块名匹配:确保代码中的模块名是
send_recv,且文件名对应为send_recv.erl(Erlang严格匹配模块名与文件名,Windows下虽不区分大小写,但保持一致可避免潜在问题)。 - 调试简化命令:先在IntelliJ的Erlang Shell中手动执行
send_recv:run(),确认函数可正常调用。若可行,去掉命令中的-noshell参数,查看更多调试输出,进一步定位问题。
内容的提问来源于stack exchange,提问作者Mohan
相关产品推荐
相关产品推荐

