IDEA 启动无响应
问题现象
昨天关机前没有先关闭 IDEA,今天启动 IDEA 发现没有反应。
问题分析
任务管理器
「Ctrl + Shift + Esc
」打开任务管理器,发现 idea 进程已经启动。
杀掉进程重启 IDEA 也不行。
情况一:非正常关闭
可能是 IDEA 非正常关闭,导致 IDEA 的缓存和索引文件出现错误,将其删除即可。
「Win + R
」打开运行对话框,输入「%AppData%
」跳转到用户数据目录,定位到 IDEA 对应版本目录,比如:C:\Users\ageovb\AppData\Local\JetBrains\IntelliJIdea2021.2
将 caches
和 index
文件夹删除,再重新启动 IDEA。
其他情况
如果不是非正常关闭,可以修改 IDEA 安装目录下的 /bin/idea.bat
,在最后一行加入 pause
:
也可以在路径
C:\Users\ageovb\AppData\Local\JetBrains\IntelliJIdea2021.2\log
下查看日志。
然后双击 idea.bat
启动 IDEA,即可查看启动失败原因:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/intellij/idea/Main has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
错误 java.lang.UnsupportedClassVersionError
的意思是不支持的 class 版本,也就是说 com.intellij.idea.Main
(这是参考博客里的类,笔者报错的不是这个类,但是报错信息一致) 这个 class 文件版本号是 55.0(对应 JDK 11),而运行用的 JRE 是 52.0(对应 JDK 8)。
打开 idea.bat
文件发现 IDEA 获取 JRE 版本的逻辑(修改 IDEA 的文件一定记得先备份,不然 IDEA 更新时会报错):
我们只需安装一个 JDK 11,然后创建一个 %APPDATA%\JetBrains\IntelliJIdea2021.2\idea64.exe.jdk
文件将对应 JDK 路径填入即可。
奇怪的是,我这边文件路径是 C:\Users\ageovb\AppData\Local\JetBrains\IntelliJIdea2021.2
,IDEA 竟然也找到了这个路径
重新双击 idea.bat
启动 IDEA,发现还是报错了:
java.util.concurrent.CompletionException: java.net.BindException: Address already in use: bind
检索了下,发现是 IDEA 启动时要从 6942~6991 范围内选一个端口使用,而这个端口被 Hyper-V 虚拟平台给保留占用了,以管理员模式执行 cmd 命令 netsh interface ipv4 show excludedportrange protocol=tcp
就可以看到。
执行命令 netsh winsock reset
重置网络端口即可。