IDEA和gradle折腾记
目的
因为Windows和macOS疯狂切换使用,同时有一段时间没用过 macOS 写代码了。之前的mac的IDEA被折腾着不可用了,这次想重新弄起来,同时想到JDK和gradle也很多新版本了,所以打算用mac升级Java较新的开发环境。
没想到这一折腾还挺有收获的,这种收获验证了我的认知:纸上学来终觉浅,绝知此事要躬行。
经过升级后,Mac的开发环境是:
- IDEA破解,版本是:2021.2.3,Ultimate
- JDK version:17.0.9, gradle version: 8.4
- SpringBoot version: 3.1.5
文末,我放了IDEA的破解教程,有需要的自取哈~
踩坑之路
踩坑的原因,是IDEA和各类包的版本匹配问题,安装问题等等,这种问题很常见,虽然简单,但需要耐心去解决,互联网上的很多解决方案是互相抄袭的,并且只给解决方案,不说原因和心路历程,所以我觉得这种教程有必要重新做一遍。
操作历程
- 一开始想安装2023版本的,网上找的教程大多是用 ja-netfilter.jar 的方法加到 vm options中,对于macOS而言,教程相对较少,而且好几个教程要么就是ja-netfilter.jar不再可用,要么就是注册码过期,我想在2023版本的IDEA中,jetbrains的校验更严格了吧。
- 尝试了好几个2023版本都没有成功,心一横,要不直接回到2018的版本,其实心里是不情不愿的,因为老版本意味着咱没啥追求啊,但忍一忍后,还是找了2018的破解版本,安装了。
- 在配置好JDK17和gradle8.4后,再使用spring-initializr (网址:https://start.spring.io/) 生成初始化项目,看到SpringBoot已经到了3.x,果然迭代快啊,就选用了3.1.5,用IDEA打开,报错:java.lang.NoClassDefFoundError: org/gradle/api/internal/plugins/DefaultConvention at org.jetbrains.plugins.gradle.tooling.builder.ProjectExtensionsDataBuilderImp
- 经历了3,以为是gradle版本问题,所以降低到了gradle 5.x,还是不行,再把JDK降低到了11,还是不行,gradle无法初始化项目。
操作总结
静下心来,经历了3-4的各类版本切换,IDEA各种尝试,网上查询资料后,我算是弄清楚了,整理如下:
- IDEA和gradle有版本匹配要求,比如IDEA2018就无法跑gradle的高版本(8.x 7.x),因为gradle的插件无法在IDEA2018跑起来,所以IDEA要升级。
- SpringBoot 3.x 的版本,JDK版本也有要求,必须是17以上,所以JDK11无法跑。
- 为了迎头赶上新时代,就必须所有版本都往上升,不能一新一旧,不然就会出现少见的报错。
IDEA安装
弄清楚了后,就再次推倒重来,为了找到破解的IDEA,就在2023年往前推2年,选用2021看看,于是找到了2021的IDEA,破解方案更多一些。
破解方案
- 该方法适用于IntelliJ IDEA 2021.2.x版本,dmg安装包直接从官网下载,选择之前的版本,版本号是:2021.2.3,Ultimate
- 因为2.x版本之后,需要登录jetbrains的账号才可以试用,所以需要注册一个账号进行登录。
- 在打开的登录页面上登录账号,回到IDEA,页面会自动变成登录成功,然后点击「Start Trial」,开始试用。
- 修改VM配置,将agent补丁放到一个固定不会改动的位置,比如:/Users/userName/Documents/FineAgent.jar;点击菜单项「Help」,选择「Edit Custom VM Options」,最后一行加上:-javaagent:/Users/mx/app/idea_breaker/FineAgent.jar
- 重启IDEA,让补丁生效。
- 打开之后会显示激活界面,选择「Activation Code」,然后将和补丁搭配使用的验证码粘贴进去,点击Activate按钮。
已经过了30天试用期,进不去IDEA的解决方案
- 可以通过删除掉IDEA的相关配置解决,通过执行资源包里自带的脚本可以解决
- 如果Mac脚本执行失败,可以手动删除配置。路径在:/Users/userName/Library/Application Support/JetBrains,可以删除IntelliJIdea这几个文件夹。
总结
- 这次的升级没有升到当下的最新,比如JDK最新已经是21了,IDEA不是2023的而是2021的,原因有:最新版本破解难,代码版本最新的问题还没多少人踩坑,慢几个月的更新和迭代没有关系,但慢太多年就不行了。
- 代码之路很难,我们必须紧跟脚步才不会落后,不能一直用JDK1.8不升级,知识太旧则无法容纳新东西。