본문 바로가기

소프트웨어/웹

[Spring boot] VS Code Spring Boot Extension의 app이 안보이는 현상 해결

 

 

TLDR;

  • 2021년 3월 17일자에 업데이트 된 Visual Studio의 Spring boot 확장 프로그램이 JDK 1.8로는 구동이 안됨.
  • Extension에서 JDK 를 별도로 설정함
  • 그게 싫으면 다운그레이드를 함
  • 자동 업데이트 멈춰!!🖐

 

 

그렇습니다. 두둥..

 

Visual Studio Code(VS Code)의 Spring Boot Extension이 또 먹통이 되었네요 🤣



무한 로딩에 빠졌다!

 

뭔가 문제인가 싶어서 OUTPUT을 확인해보니 역시나...

 

 

Activating 'vscode-spring-boot' extension
Found java exe: C:\Program Files\Java\jdk1.8.0_202\bin\java.exe
isJavaEightOrHigher => true
Redirecting server logs to /dev/null
ERR: java.lang.UnsupportedClassVersionError: org/springframework/ide/vscode/boot/app/BootLanguagServerBootApp 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:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main"



Extension은 Major 버전 55.0으로 컴파일이 되었으나 실행환경은 Major 버전 52.0이라 동작이 안된다는데..

 

분명 저는 이전에 Red Hat Extension의 JDK 문제로 인해 별도로 Java Home 설정을 해줬단 말이죠..?

 

뭔가 이상한데..?

 

 

 

원인

보통 Visual Studio Code에서 Spring boot 개발 환경을 구축 시, Spring Boot Extension Pack으로 일괄 설치를 하게 됩니다.

이 중 Spring Boot Tools의 신규 업데이트가 있었고 해당 Extension의 빌드가 Java11 (55.0)으로 빌드가 된 것에 반해 JDK1.8 (52.0)으로 구동되어 오류가 발생한 것이죠.😁

 

 

 

현재 정확한 이유는 모르겠으나 나름 추측해보자면...

  1. 프로젝트의 JDK가 1.8이라서 1.8로 동작했다.
  2. Visual studio code Java Home 설정을 싹 무시하고 Windows의 Path 정보로 동작했다.

정도로 추측해볼 수 있겠습니다.




 

 

첫번째 해결 방법 - Java home 설정

File > Preferences > Settings 로 진입합니다. 여기서 Extension > Boot-Java Configuration으로 이동하면 spring boot extension 관련 설정들을 확인할 수 있습니다.

 



쭉 쭉 내리다보면 Spring-boot > Ls > java: Home항목이 있을거에요.

 


여기서 Edit in setting.json을 눌러주면 settings.json창이 뜨게 되며 spring-boot.ls.java.home항목이 자동완성 되어 있습니다.

 

 


저는 별도의 Open JDK 14가 D:\jdk-14.0.2에 설치되어 있기 때문에 아래와 같이 Java home을 세팅해주었습니다.

 

{ 
... 
    "spring-boot.ls.java.home": "D:\\jdk-14.0.2", 
... 
}



 

위와 같이 설정을 변경해주면 설정해준 JDK를 정상적으로 찾으면서 구동이 되는 것을 확인할 수 있습니다~😊😊

 

Activating 'vscode-spring-boot' extension
Found java exe: D:\jdk-14.0.2\bin\java.exe
isJavaEightOrHigher => true
Redirecting server logs to /dev/null
ERR: Disabling server log output. No more output will be sent after this.

Child process connected on port 45556

 

무한로딩 해결!

 

Spring도 정상적으로 구동된다~!

 

 

 

두번째 해결 방법 - 다운그레이드

잘 모르겠고 예전에 쓰던거 쓸래..

 

라는 생각이라면 Extension을 이전 버전으로 돌려버리면 됩니다.  아래와 같이 진행하면 Extension을 다운그레이드할 수 있습니다~ 😀

 

Extension 목록으로 이동하여 Spring Boot Tools를 선택하면 해당 Extension의 정보를 확인할 수 있습니다.


문제가 되는 버전은 v1.25.0으로 3월 17일자로 업데이트 되었습니다.

 

V1.25.0은 2021년 3월 17일에 업데이트 신규 업데이트가 되었다.

 

 

 


이제 목록에서 톱니바퀴를 클릭하고 컨텍스트 메뉴에서 Install Another Version...를 선택합니다.

 

 

 

상단에 이전 버전들을 선택할 수 있고 1.25.0 버전 미만인 1.24.0으로 다운그레이드를 해주면 정상적으로 동작이 되는 것을 확인할 수 있습니다.

 



마치며...

아무쪼록 많은 분들께 도움이 되었으면 합니다. 또 한 번 당황했네요 'ㅅ'




같이 보면 좋은 링크