Windows环境下WSL+IntelliJ运行测试遇CreateProcess error=193求助
在Windows的IntelliJ IDEA社区版中配置WSL运行Java测试用例失败的排查方案
我在Windows系统上使用IntelliJ IDEA社区版,尝试通过WSL运行测试用例时出现以下错误:
Error running 'InstanceAssignmentConfigUtilsTest': Cannot run program "\wsl$\Ubuntu\usr\lib\jvm\java-11-openjdk-amd64\bin\java" (in directory "\wsl$\Ubuntu\home\aditya0811\pinot\pinot-common"): CreateProcess error=193, %1 is not a valid Win32 application
该测试用例在Ubuntu的Windows终端中可正常运行,但我希望通过Windows端IntelliJ进行代码编辑与调试,同时利用WSL环境运行Java。由于Run Target功能仅在IntelliJ旗舰版中可用,无法通过该方式配置,查阅资料后问题仍未解决,现求助排查缺失的配置项。
环境信息
IntelliJ信息
IntelliJ IDEA 2023.2.2 (Community Edition) Build #IC-232.9921.47, built on September 13, 2023 Runtime version: 17.0.8+7-b1000.22 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11.0 GC: G1 Young Generation, G1 Old Generation Memory: 4048M Cores: 12 Registry: ide.experimental.ui=true Kotlin: 232-1.9.0-IJ9921.47
IntelliJ Maven设置
Maven home path : \\wsl$\Ubuntu\opt\apache-maven-3.6.3 User settings file : \\wsl$\Ubuntu\home\aditya0811\.m2\settings.xml Local repository : \\wsl$\Ubuntu\home\aditya0811\.m2\repository
IntelliJ Maven/导入设置
JDK for importer (version 11.0.21) : \\wsl$\Ubuntu\usr\lib\jvm\java-11-openjdk-amd64
WSL环境变量
M2_HOME = /opt/apache-maven-3.6.3 JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
WSL版本
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)
排查与解决步骤
1. 核心问题分析
报错CreateProcess error=193的本质是:Windows直接调用了WSL中的Linux版Java可执行文件(ELF格式),而Windows无法识别并运行Linux程序,必须通过WSL的shell间接启动。
2. 配置WSL远程JDK
- 打开
File > Project Structure > Platform Settings > SDKs - 点击
+号选择Add JDK,再选WSL,选择你的Ubuntu发行版,IDE会自动检测WSL内的Java路径,完成添加后将其设为项目默认SDK - 回到测试用例的Run/Debug Configurations,将配置中的JRE改为刚添加的WSL远程JDK
3. 修正Maven执行配置
- 打开
Settings > Build, Execution, Deployment > Build Tools > Maven > Runner - 将JRE设置为上述WSL远程JDK,避免直接使用
\\wsl$\路径的本地JDK - 若需要通过Maven运行测试,可勾选Delegate IDE build/run actions to Maven,并在Maven命令前添加
wsl前缀(如wsl mvn test -Dtest=InstanceAssignmentConfigUtilsTest)
4. 调整项目路径映射
- 不要直接通过
\\wsl$\路径挂载项目,建议在WSL终端中克隆项目到Ubuntu本地目录,再通过IntelliJ的File > Open打开\\wsl$\Ubuntu\home\aditya0811\pinot - 检查WSL内项目文件的权限,确保IntelliJ能正常读写(可通过WSL终端执行
chmod -R 755 /home/aditya0811/pinot调整)
5. 自定义启动命令(备选方案)
若远程JDK配置无效,可手动配置测试用例的启动命令:
- 打开测试用例的Run/Debug Configurations
- 在Configuration标签页,将Program改为
wsl.exe - Arguments填写:
--exec bash -c "cd /home/aditya0811/pinot/pinot-common && /usr/lib/jvm/java-11-openjdk-amd64/bin/java [你的测试类全路径] [测试参数]"
内容的提问来源于stack exchange,提问作者Aditya Mahajan
相关产品推荐
相关产品推荐

