Intellij 시작시 바로 꺼지는 Error
- Error
- 2021년 4월 15일
윈도우로 작업을 위해 IDE를 실행시켜보면 아래와 같은 에러가 발생하며 IntelliJ뿐만 아니라 Jetbrain사의 모든 IDE들이 실행이 안되는데 매번 어떻게 해결했더라 기억을 되짚고 그때마다 여러 글을 뒤져보는게 힘들어 기록을 위해 작성한다.
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
원래 해결했던 방법으로는 config 파일을 삭제하고 재실행하면 됐는데 여전히 실행이 안돼서 IDE를 삭제했다가 재실행을 수행했다. 하지만 삭제했다 다시 깔아도 문제가 해결되지 않아 c://user/사용자이름/AppData/Roaming/JetBrains 안에 있는 모든 설정파일도 삭제했다가 재설치를 진행했으나 결과는 똑같았다.
어떻게 해결해야하지 고민중에 에러메세지가 눈에 들어왔고 그 중 Address already in use: bind 라는 문구가 보여서 이를 이용해 해결했다.
1. 문제 원인
JetBrain사의 IDE가 사용하는 포트를 Windows의 hyper-v가 점유하여 실행이 안된 것이다. 문제의 원인이었던, hyper-v를 끄고 재부팅을 하면 정상적으로 IDE가 실행되지만 WSL2를 사용하고 있어 hyper-v는 사용해야 했기에 추가작업을 실행해주었다.
2. 해결 방법
cmd를 관리자모드로 실행
hyper-v 비활성화 (몇 번의 다시 시작이 필요함)
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
필요한 모든 재시작을 완료하면 원하는 포트를 예약하여 hyper-v가 다시 예약하지 않도록 하기
netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1
hyper-V를 다시 활성화합니다. (이과정에서도 재부팅이 발생)
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
결국 해결은 되었으나 JetBrain의 설정파일을 다날렸고 설정파일을 동기화하지 않은 나는 key-map부터 theme등 각종 설정파일을 다시 처음부터 셋팅하느라 시간을 많이 잡아먹었다.
Reference
https://github.com/docker/for-win/issues/3171#issuecomment-459205576