IDEA 启动无响应

问题现象

昨天关机前没有先关闭 IDEA,今天启动 IDEA 发现没有反应。

问题分析

任务管理器

Ctrl + Shift + Esc」打开任务管理器,发现 idea 进程已经启动。

杀掉进程重启 IDEA 也不行。

情况一:非正常关闭

可能是 IDEA 非正常关闭,导致 IDEA 的缓存和索引文件出现错误,将其删除即可。

Win + R」打开运行对话框,输入「%AppData%」跳转到用户数据目录,定位到 IDEA 对应版本目录,比如:C:\Users\ageovb\AppData\Local\JetBrains\IntelliJIdea2021.2
IDEA

cachesindex 文件夹删除,再重新启动 IDEA。

其他情况

如果不是非正常关闭,可以修改 IDEA 安装目录下的 /bin/idea.bat,在最后一行加入 pause
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 更新时会报错):
idea.bat

我们只需安装一个 JDK 11,然后创建一个 %APPDATA%\JetBrains\IntelliJIdea2021.2\idea64.exe.jdk 文件将对应 JDK 路径填入即可。

奇怪的是,我这边文件路径是 C:\Users\ageovb\AppData\Local\JetBrains\IntelliJIdea2021.2,IDEA 竟然也找到了这个路径
idea64.exe.jdk

重新双击 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 重置网络端口即可。

参考

posted @ 2021-09-24 12:07  ageovb  阅读(5844)  评论(0编辑  收藏  举报