由于 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 程序实在是太难了,解决一个又来一个,上面的问题大家有什么解决方法吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.