由于 ai agent 的缘故,项目不得不迁移到 wsl 内部,但是迁移到 wsl 后问题实在太多了,解决一个又来一个,导致不太有信心使用,有没有好点的解决方案?
问题 1: 使用 intellij idea 启动 java 程序端口占用问题( jmx ),在 wsl 中没有找到到 jmx 占用的端口,但是又说占用了,不知道什么原因,直接暴力关闭 jmx ,解决办法:关闭 jmx
问题 2: 在 wsl 中启动本地端口启动 8888 ,localhost 能访问,局域网不能访问,原因是 wsl 防火墙问题,解决办法:使用 powershell 管理员执行命令
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
问题 3: 程序终于启动起来了,结果无法使用 java debug 动态更改代码,也无法进入断点,jrebel 也无法使用。 原因可能是:
java.lang.IllegalAccessException: Class com.intellij.spring.debugger.rt.com.intellij.spring.debugger.rt.SpringBeanDefinitionLoader can not access a member of class org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.intellij.spring.debugger.rt.com.intellij.spring.debugger.rt.SpringBeanDefinitionLoader.getAnnotationMetadataClassName(SpringBeanDefinitionLoader.java:182)
at com.intellij.spring.debugger.rt.com.intellij.spring.debugger.rt.SpringBeanDefinitionLoader.getBeanClassName(SpringBeanDefinitionLoader.java:121)
at com.intellij.spring.debugger.rt.com.intellij.spring.debugger.rt.SpringBeanDefinitionLoader.getAllBeanDefinitions(SpringBeanDefinitionLoader.java:40)
at org.springframework.context.event.ContextRefreshedEvent.<init>(ContextRefreshedEvent.java:37)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:338)
这个到目前为止还没有解决。
综上所述,wsl 开发 java 程序实在是太难了,解决一个又来一个,上面的问题大家有什么解决方法吗?
1
ixiaohei 17 小时 0 分钟前
考虑换 mac 呢?我之前也是 java 程序员,8 年前就换 mac 了,换 mac 发现打开了新大门啊。后面就转其他语言后端开发了
|
2
wenning 16 小时 59 分钟前
我是直接使用 vmware 启动一个虚拟机来做开发了, idea 直接放到虚拟机里面; 之前用 wsl 的时候发现 linux 下面 java 打包编译性能比 windows 原生高了三倍, 但是 idea 的远程开发体验太差了, 干脆直接启动虚拟机来处理, 正好现在 openclaw 这些处于安全需要也要一个隔离环境
|
3
dcsuibian 16 小时 49 分钟前 ❯ cat .\.wslconfig
[wsl2] firewall=false autoProxy=false networkingMode=Mirrored [experimental] hostAddressLoopback=true |
4
dcsuibian 16 小时 48 分钟前
注意,我用的 wsl 版本是 2.6.3.0 ,以上设置都在 WSL Settings 里有图形化的设置方式
尤其是你的问题 2 ,就是设置防火墙吧 |
5
bjzhou1990 16 小时 47 分钟前
wsl 本身就是个 hyper-v 虚拟机,为什么不直接在 hyper-v 上运行个 Linux 虚拟机
|
6
cheng6563 16 小时 45 分钟前
IDEA 设置有个增强调试功能,可以去关掉。
然后,早日脱离 hyperv ,早日获得新生。 |
7
liu731 PRO 再买块硬盘装 Ubuntu 可能比较好~
|
8
Mogugugugu 16 小时 40 分钟前
wsl 不是开发 java 太难,而是 wsl+idea 开发 java 太难,放弃 idea 一切都顺畅了。
|
9
Gehrman 16 小时 31 分钟前
可以直接在 WSL 里启动 idea 客户端吧,目前有 WSLg 了。
之前玩了下,Android Studio 直接装在 WSL 里,启动后像一个 Windows 软件窗口一样。 当时试了下,成功编译安装了一个 apk 到手机上。 |
10
dandel1on 16 小时 29 分钟前 可以试一下用 wsl 运行 linux 版的 idea
|
11
urfree 16 小时 19 分钟前
vscode+wsl+ai 开发什么都可以,ai 时代该抛弃 idea 了
|
13
orzsome 16 小时 0 分钟前
别用 wsl ,直接 claude code 或者 codex app ,他们 win 支持的还行。wsl 我使用的时候总是访问有问题。你如果使用 wsl ,也不需要安装 linux 版本的 idea 。直接使用原来 win 的。
|
14
gudecatch 15 小时 58 分钟前
之前一直在 wsl 里面装一个 intellij ,因为 intellij 在 windows 下没法 debug wsl 里面的代码。但是最新的版本已经解决了这个问题,实际使用基本毫无问题。
你提到的问题我觉得可能更多是 wsl 的网络配置相关的东西 |
16
ic2y 15 小时 11 分钟前
jetbrain gateway
|
17
anivie 15 小时 6 分钟前
wsl 没有那么开箱即用,是需要适配的,idea 对 wsl 的适配并不完美,很多 bug ,用起来还不如远程开发。不过貌似 jb 的远程开发更难用就是了……还是换 mac 解君愁吧
|
18
ThisDay 14 小时 14 分钟前
vscode 系列对 wsl2 适配的非常好,至于 jb ,你说的端口占用跟 debug 卡死问题,我 issue 提了快两年了也没修。
|
19
LowBi 14 小时 0 分钟前
看了此贴 也是打消了使用 wsl 开发 Java 的计划了,Claude code 装 Windows 上用用看先
|
20
hmmmbiubiubiu 13 小时 56 分钟前
@bjzhou1990 vscode 对 wsl 的支持就像你在用一台 linux 开发.
|
21
xubeiyou 13 小时 32 分钟前
暂时是 wsl 使用 cli 开发本地的 然后本地联调
|
22
redbule 13 小时 26 分钟前
使用 wsl2 ,使用 wsl2 的镜像模式(和主机共享端口)
Windows 下请使用 powershell7 |
23
VoiceEXONE 13 小时 26 分钟前 via iPhone
目前没有发现 AICoding CLI 对 Java 支持友好的
|
24
sunpj 13 小时 25 分钟前
你在启动项里面加 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 然后在远程 jvm 调试 加 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 我现在新公司只能用 windows 所以基本完整的搞了 idea+wsl2 的开发 实际上用 vscode 配置调试会方便很多 就是 vscode 开发 java 作为 ide 还是弱了点 作为 ai 的载具还是 key 的
|
25
gwkoooo 12 小时 58 分钟前
我在用 copilot cli 用的 shell7 没发现什么问题
|