如何正确配置WSL2与IntelliJ?

24

我无法在WSL2创建的项目中运行。我遇到了这个错误。有人知道是什么原因引起的吗?

Abnormal build process termination: 
C:\WINDOWS\system32\wsl.exe --distribution Ubuntu-20.04 --exec /bin/sh -c "cd /home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server && /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xmx700m -Djava.awt.headless=true -Djdt.compiler.useSingleThread=true -Dpreload.project.path=/home/jakub/test -Dpreload.config.path=/mnt/c/Users/Z004506P/AppData/Roaming/JetBrains/IntelliJIdea2021.1/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Dio.netty.initialSeedUniquifier=-636684381209623859 -Djps.in.wsl=true -Dfile.encoding=windows-1252 -Duser.language=en -Duser.country=US -Didea.paths.selector=IntelliJIdea2021.1 '-Didea.home.path=/mnt/c/Program Files/JetBrains/IntelliJ IDEA 2021.1' -Didea.config.path=/mnt/c/Users/Z004506P/AppData/Roaming/JetBrains/IntelliJIdea2021.1 -Didea.plugins.path=/mnt/c/Users/Z004506P/AppData/Roaming/JetBrains/IntelliJIdea2021.1/plugins -Djps.log.dir=/mnt/c/Users/Z004506P/AppData/Local/JetBrains/IntelliJIdea2021.1/log/build-log '-Djps.fallback.jdk.home=/mnt/c/Program Files/JetBrains/IntelliJ IDEA 2021.1/jbr' -Djps.fallback.jdk.version=11.0.10 -Dio.netty.noUnsafe=true '-Djava.io.tmpdir=//wsl$/Ubuntu-20.04/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/test_77f155f7/_temp_' -Djps.backward.ref.index.builder=true -Dtmh.instrument.annotations=true -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled '-Dkotlin.daemon.client.alive.path=\"C:\Users\Z004506P\AppData\Local\Temp\kotlin-idea-13948257364742160812-is-running\"' -classpath /home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jps-launcher.jar org.jetbrains.jps.cmdline.Launcher '/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/netty-buffer.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/nanoxml-2.2.3.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/maven-resolver-transport-file-1.3.3.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jna-platform.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/oro-2.0.8.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/slf4j.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/log4j.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/lz4-java-1.7.1.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jna.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/maven-resolver-provider.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/annotations.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/resources_en.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/commons-lang3-3.10.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/util.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/maven-resolver-connector-basic-1.3.3.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jps-builders-6.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/asm-all-9.1.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/forms_rt.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/guava.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jps-builders.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/zip-signer.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jdom.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/intellij-deps-fastutil-8.5.2-6.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/plexus-utils-3.3.0.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javac2.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/qdox-2.0.0.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/commons-logging-1.2.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/trove4j.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/forms-1.1-preview.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jps-javac-extension-1.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/aether-dependency-resolver.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/http-client.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/maven-resolver-transport-http-1.3.3.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/idea_rt.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/netty-codec-http.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jps-model.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/gson-2.8.6.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-stdlib-jdk8.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/platform-api.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jasper-v2-rt.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/ant-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/java-guiForms-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/eclipse-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/eclipse-common.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/java-langInjection-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/groovy-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/groovy-constants-rt.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/maven-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/aspectj-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/gradle-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/devkit-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javaFX-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javaFX-common.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javaee-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-jps-plugin.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-stdlib.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-stdlib-jdk7.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-stdlib-jdk8.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-reflect.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-plugin.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-jps-common.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/kotlin-common.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javaee-jpa-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javaee-appServers-websphere-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/javaee-appServers-weblogic-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/groovy-grails-jps.jar:/home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/groovy-grails-compilerPatch.jar' org.jetbrains.jps.cmdline.BuildMain 192.168.203.193 57615 867865da-6270-418c-bb35-8dcdf1591467 /home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server"
Build process started. Classpath: /home/jakub/.cache/JetBrains/IntelliJIdea2021.1/compile-server/jps-IU-211.6693.111/jps-launcher.jar
Error connecting to 192.168.203.193:57615; reason: connection timed out: /192.168.203.193:57615
io.netty.channel.ConnectTimeoutException: connection timed out: /192.168.203.193:57615
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:261)
    at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
    at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)   at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:834)
Exiting.

禁用防火墙或设置规则 - CrazyCoder
我已经尝试过了,但是我无法运行这个命令:Get-NetFirewallApplicationFilter -Program "C:\users\yole\appdata\local\jetbrains\toolbox\apps\idea-c\ch-0\212.1026\jbr\bin\java.exe" | Get-NetFirewallRule | Where-Object Profile -eq "Public" | Get-NetFirewallPortFilter | Where-Object Protocol -eq "TCP" | Get-NetFirewallRule | Set-NetFirewallRule -Action Allow。 - Jakub Znamenáček
如果您无法手动设置正确的规则,则禁用防火墙将起作用。 - CrazyCoder
很遗憾,这是不可能的,因为我的电脑受公司管理,我无法关闭防火墙。但我应该能够添加规则。只是命令对我来说不起作用。你能告诉我应该手动添加哪些规则吗? - Jakub Znamenáček
5个回答

24

官方指南:错误或过时?

JetBrains的官方指南(位于https://www.jetbrains.com/help/idea/how-to-use-wsl-development-environment-in-product.html#debugging_system_settings)中有两个部分关于配置Windows防火墙的说明:

(官方) 步骤1:允许来自WSL的流量(正确的方法)

以上链接中的第一步是通过PowerShell以管理员身份添加一个新的入站规则,以允许来自WSL的所有流量:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

此命令有效,并添加新规则。

(官方) 步骤2:删除阻止传入到IDEA的流量的规则(这是错误的)

说明书中的下一步是删除现有的阻止流量到IntelliJ IDEA的规则:

Get-NetFirewallRule | where DisplayName -ILike "idea*.exe" | Remove-NetFirewallRule

这个命令没有任何作用,因为过滤条件 where DisplayName -ILike "idea*.exe" 没有匹配到任何内容。

DisplayName 属性应该对应防火墙控制面板中的 Name 列:

IntelliJ IDEA rules already in Windows Firewall

所以你可以看到,“idea*.exe”在那里不会匹配成功。

如果我把搜索条件改成:

Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*"

然后我确实在Shell输出中得到了所有四个规则的返回结果:

PS C:\Windows\system32> Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*"


Name                  : TCP Query User{6288ADD6-1B2E-4BFF-9317-AEEA34194E04}C:\program files\jetbrains\intellij idea
                        community edition 2021.2\bin\idea64.exe
DisplayName           : IntelliJ IDEA Community Edition 2021.2
Description           : IntelliJ IDEA Community Edition 2021.2
DisplayGroup          :
Group                 :
Enabled               : True
Profile               : Private
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : DeferToUser
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : The rule was parsed successfully from the store. (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : UDP Query User{1AE9E9C6-02EF-4C65-8781-B1050740E936}C:\program files\jetbrains\intellij idea
                        community edition 2021.2\bin\idea64.exe
DisplayName           : IntelliJ IDEA Community Edition 2021.2
Description           : IntelliJ IDEA Community Edition 2021.2
DisplayGroup          :
Group                 :
Enabled               : True
Profile               : Private
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : DeferToUser
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : The rule was parsed successfully from the store. (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : {386E3B53-5E4D-4939-8114-74499BDA8515}
DisplayName           : IntelliJ IDEA Community Edition 2021.2
Description           : IntelliJ IDEA Community Edition 2021.2
DisplayGroup          :
Group                 :
Enabled               : True
Profile               : Public
Platform              : {}
Direction             : Inbound
Action                : Block
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : The rule was parsed successfully from the store. (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : {63ED0AB1-12B9-47F2-9810-D1D446EBF9D8}
DisplayName           : IntelliJ IDEA Community Edition 2021.2
Description           : IntelliJ IDEA Community Edition 2021.2
DisplayGroup          :
Group                 :
Enabled               : True
Profile               : Public
Platform              : {}
Direction             : Inbound
Action                : Block
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : The rule was parsed successfully from the store. (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

步骤 2:删除阻止 IDEA(右侧)的入站流量

当我禁用这两个公共入站规则并设置新添加的 WSL 入站规则时,然后 IDEA 可以正确运行 Java,在此之前它一直出现连接错误。

您可以通过以下任一方法实现禁用/删除 IDEA 的这两个入站公共规则:

选项 1: Windows Defender 防火墙高级安全性 > 入站规则

在上图所示的视图中,右键单击规则并选择 Public 配置文件上每个入站规则的“禁用规则”。

选项 2: 通过 PowerShell 禁用

您可以通过以下命令在 PowerShell 中(作为管理员)禁用相同的两个规则:

Get-NetFirewallProfile -Name Public | Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*" | Disable-NetFirewallRule

选项三:使用PowerShell删除

您可以通过以下命令使用PowerShell(作为管理员)删除相同的两个规则:

Get-NetFirewallProfile -Name Public | Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*" | Remove-NetFirewallRule

这三种方法对我都有效,使我能够启用所有的Windows防火墙配置文件(域、专用、公用),并且Java现在可以在WSL2文件系统中的IDEA项目中正确运行。

更新:我不得不从最新的2021.2版本回滚到2021.1.3,因为最新版本会“失去”连接到WSL2文件系统的能力,直到WSL被重新启动。

我同时安装了两个版本,但我不得不编辑防火墙规则,允许流量通过2021.1.3程序(有趣的是,防火墙中它也被称为2021.2!)并将公用配置文件(只有专用)添加到允许规则中。


1
Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*"Get-NetFirewallRule | where DisplayName -ILike "idea*.exe" 在我的系统中都没有输出任何内容,错误仍然存在。有什么想法吗?我在Windows Defender入站规则中找不到任何与IDEA相关的内容。 - Jytesh
1
如果这些搜索没有结果,可能是因为IntelliJ IDEA不再添加防火墙阻止规则,只需执行第一步允许WSL流量即可。 - Steve Goossens
选项2对我有用(我确实需要重新启动IDEA)。 - tgdavies
我从版本.2升级到.3。然后防火墙更改无效。我不得不重新安装新版本,现在它可以正常工作了。 - FishingIsLife
2
.exe的名称似乎取决于您安装IntelliJ的方式。如果您使用JetBrains Toolbox安装IDE,则IntelliJ二进制文件位于类似于%USERPROFILE%\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\221.5591.52(具体版本取决于)的位置,并且二进制文件的名称为idea64.exe。独立安装似乎使用不同命名的二进制文件,这可以解释我们可以观察到的不同工作设置... - tkonsta
显示剩余2条评论

2

Windows 11

  1. 搜索 Windows Defender 防火墙
  2. 点击高级设置

enter image description here

  1. 选择 Inbound Rules

enter image description here

  1. 按名称对列表进行排序

  2. 搜索:Intellij IDEA、Java、Jetbrains_...等(您可能没有所有确切的内容,重点是使任何与Jetbrains相关的内容都可用)

  3. 如果规则出现红色标志,则表示已被阻止 enter image description here

  4. 要启用它,请选择该规则,然后在右侧窗格中选择属性 enter image description here

  5. 选择允许连接并选择确定 enter image description here

  6. 对于所有与JetBrains相关的内容(以及Java相关的内容),都要执行此操作

请等待几分钟并重试,您可能还需要重新启动Intellij

1

遇到了同样的问题。 所有提到的PowerShell命令,包括JetBrains网站上的命令,都没有真正帮助。

但最终解决问题的是Windows Defender的“入站规则”面板。只需找到“idea64.exe”和“IntelliJ IDEA”的所有限制性规则(即“操作:阻止”)并禁用它们。

非常好用。


1
在我的情况下,设置正确的WSL 2.0发行版Shell路径在Intelij终端设置路径中有所帮助。不要使用wsl.exe,而是设置你的发行版的完整路径(我从Windows 终端中获取了路径)。在我的情况下,当我使用Ubuntu 20.04时,将wsl.exe更改为C:\WINDOWS\system32\wsl.exe -d Ubuntu-20.04就可以解决问题了。

0

防病毒防火墙阻止了WSL和Intellij之间的连接

在我的情况下,我遵循了官方文档here,但并不是Windows防火墙阻止了对WSL的访问,而是我的McAfee安全防病毒软件,所以我只需要进入McAffe应用程序 -> 我的保护 -> 防火墙 -> 应用程序连接到网络 -> 查找Intellij -> 单击编辑并允许全部。这解决了我的问题,因此也许检查您的防病毒软件的防火墙配置是否适用于Intellij

附注:我目前正在使用Win11和Intellij 2022.3.3


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接