Intellij 시작시 바로 꺼지는 Error

저만 그런지는 모르겠지만 IntelliJ를 쓰다보면 꽤 자주 발생하는 에러입니다.

Internal error. Please refer to https://jb.gg/ide/critical-startup-errors

java.util.concurrent.CompletionException: java.net.BindException: Address already in use: bind
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1702)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.BindException: Address already in use: bind
    at java.base/sun.nio.ch.Net.bind0(Native Method)
    at java.base/sun.nio.ch.Net.bind(Net.java:455)
    at java.base/sun.nio.ch.Net.bind(Net.java:447)
    at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:550)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334)
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973)
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:248)
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    ... 1 more

IntelliJ뿐만 아니라 Jetbrain사의 모든 ide들이 실행이 안되는데 이번에 해결하면서 한번 크게 데여 이참에 정리해두려고 합니다.

원래 해결방법으로는 config파일을 삭제하고 재실행하면 됬었는 데 이번에는 실행이 여전히 안되서 삭제했다 재실행을 수행했습니다. 하지만 삭제했다 다시 깔아도 문제가 해결되지 않아 c://user/사용자이름/AppData/Roaming/JetBrains안에 있는 모든 설정파일도 삭제했다 재설치를 진행했으나 결과는 똑같았습니다.

에러 중에 Address already in use: bind라는 문구가 보여서 이를 이용해 검색하였고 아래와 같이 해결방법을 찾았습니다.


해결 방법

  1. cmd를 관리자모드로 실행

  2. hyper-v 비활성화 (몇 번의 다시 시작이 필요함)

    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
    
  3. 필요한 모든 재시작을 완료하면 원하는 포트를 예약하여 hyper-v가 다시 예약하지 않도록합니다.

    netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1
    
  4. hyper-V를 다시 활성화합니다. (이과정에서도 재부팅이 발생)

    dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
    


문제의 해결법을 보면 알 수 있듯이 window가 부팅하면서 JetBrani사의 ide가 사용하는 포트를 hyper-v가 점유하여 실행이 안된 것이었습니다. 위처럼 hyper-v를 끄고 재시작만 수행해도 인텔리제이는 실행되었으나 hyper-v는 사용해야하기에 추가작업을 실행해주었습니다.

결국 해결은 되었으나 인텔리제이의 key-map부터 theme등 각종 설정파일을 다시 처음부터 셋팅하느라 시간을 많이잡아먹었는데 다른 분들은 저와같이 설정파일까지 모두 삭제하는 실수를 하지 않았으면 좋겠습니다.




Reference

https://github.com/docker/for-win/issues/3171#issuecomment-459205576