WSL2环境下IDEA运行Java Scanner代码无法获取输入的问题求助
解决WSL2环境下IDEA运行Java Scanner代码报NoSuchElementException的问题
问题复现
在WSL2环境的IDEA中运行包含Scanner.nextLine()的Java代码时,程序未等待输入直接抛出java.util.NoSuchElementException: No line found,但打包为fat jar在WSL终端运行、Windows环境IDEA运行均正常。
核心原因
WSL2环境下,IDEA默认的运行配置未为程序分配交互式终端,导致System.in输入流无法正常读取用户输入。
解决思路
修改运行配置启用终端交互
打开Run/Debug Configurations,找到对应的运行配置项,勾选Run in terminal选项(部分旧版IDEA为Emulate terminal in output console),保存后重新运行程序,此时会唤起WSL的终端窗口等待输入。检查IDEA的WSL终端配置
进入Settings -> Tools -> Terminal,确认Shell path设置为WSL的默认shell,比如wsl.exe或指定发行版路径wsl.exe -d Ubuntu,确保IDEA能正确调用WSL的交互式终端。升级IDEA至最新稳定版
部分早期版本的IDEA对WSL2的终端集成存在兼容性bug,升级到最新版可修复此类输入流异常问题。临时替代方案
如果上述方法无效,可手动在IDEA的Terminal面板切换到WSL环境,进入编译后的class文件目录,执行java ScannerTest命令直接运行,此时能正常读取终端输入。
内容的提问来源于stack exchange,提问作者Reno
相关产品推荐
相关产品推荐

