Backend/Spring

Spring 프로젝트 실행 - with Intellij (from WSL)

hou27 2022. 5. 1. 20:15

이전 포스트에서 Spring 프로젝트를 생성하고 실행까지 해봤었는데,

Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr

 

Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr

Spring Boot를 공부하기 위해 알아보던 중 프로젝트를 쉽게 시작할 수 있게 도와주는 도구가 있다는 것을 알게 되었다. Spring Initializr https://start.spring.io/ spring에서 제공하는 웹 도구인데, 원하는 설.

hou27.tistory.com

생각보다 환경설정하는 과정에서 간단하게 마무리되지 않아 구글링하며 해결한 문제를 잊지 않기 위해

추가로 포스트를 작성하려 한다.

위 사진처럼 Intellij 우측 상단의 환경설정이 추가되지 않은 것을 발견하였다.

클릭하여

일단 추가버튼이 보이길래

gradle 프로젝트였기 때문에 Gradle을 추가해보았는데, 원하는 결과를 얻을 수 없어 구글링을 해보았다.

 


 

지금부터 보편적인 방법을 통해 spring 프로젝트를 Intellij를 통해 열어보도록 하겠다.

 

Spring 프로젝트 실행 - with Intellij (from WSL)

 

Spring Initializr

https://start.spring.io/

 

위 도구를 통해 생성한 프로젝트를 살펴보면 위 사진과 같이

build.gradle

해당 파일이 존재한다.

 

build.gradle

plugins {
	id 'org.springframework.boot' version '2.6.7'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'prac'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

기본 내용은 위와 같은데, 

빌드 도구인 Gradle을 통해 위 파일에 명시된 내용을 바탕으로 빌드가 진행되게 된다.

 

 

그렇기 때문에 Intellij를 통해 프로젝트를 열 때 build.gradle을 통해 열어주고,

 

Gradle JVM 에러를

위와 같이 설정해주어 해결하였다.

성공적으로 진행된 것을 확인하고 나서,

Run/Debug Configurations를 확인해보니 위와 같이 main class를 불러오는 부분에서 에러가 발생하고 있었다.

 

Run해보니 이런 에러를 확인할 수 있었는데,

 

에러를 구글링하여

https://www.jetbrains.com/help/idea/how-to-use-wsl-development-environment-in-product.html#debugging_system_settings

 

WSL | IntelliJ IDEA

 

www.jetbrains.com

다음과 같이 해결하였다.

 

1. 관리자 권한으로 PowerShell 실행

 

2. WSL을 사용하여 연결을 허용하도록 하는 명령을 실행

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

 

3. 방화벽 규칙을 갱신

Get-NetFirewallProfile -Name Public | Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*" | Disable-NetFirewallRule

 

 

해결 후

다시 실행해보니 위와 같이 에러가 발생하였다.

 

무언가 안될 때 처음부터 다시 시작하면 잘 동작하던 기억이 있어

모두 초기화하고 다시 처음부터 진행해보았다.

 

 

다시 위에서와 같이

 

build.gradle을 통해 프로젝트를 열어주었으며,

Gradle JVM의 세팅도 모두 변경해주었다.

 

그런데 이번엔 

 

환경 설정에 아무것도 잡혀있지 않았는데,

Project Structure을 확인해보니 SDK가 지정되어있지 않았다.

11버전을 사용 중이므로 적절한 것을 선택해주고,

 

로딩 중인 gradle build를 기다려보니

.gradle 폴더가 갈색으로 변하는 것과

실행 버튼이 뜬 것을 확인할 수 있었다.

 

실행해보니

out 폴더가 생기며

정상적으로 실행되는 것을 확인할 수 있었다.


결론

 

Gradle JVM 설정과

Project 설정을 잘 해준다면 정상적으로 작동하나,

 

위에선 두번째 시도에서 성공한 것처럼 글을 작성했지만

사실 두번째도 실패하고 세번째에서야 성공했었다.

 

스스로 생각하기에 제대로 했다고 느낄 수 있으나 오류 또는 무언가 잘못 건드렸거나 꼬였을 수 있으므로

원인 모를 오류가 발생했을 때는 다시 처음부터 차근차근 해보는 것도 나쁘지 않은 것 같다.

 

Intellij와 빨리 친해져야겠다..

 


+ 22.05.07.

 

스스로가 설정을 완벽하게 했는데 왜 안되지?

라는 생각이 들기 시작한다면

 

그렇다면 이 방법도 한번 시도해보자

Intellij 우측의 알림을 확인하면

높은 확률로 Gradle sync 작업이 실패했을 것이다.

그렇다면 Gradle을 다시 돌려줘보자

 

설정이 완벽했다는 가정 하에 성공적으로 완료되는 것을 볼 수 있을 것이다.

 

Intellij와 그나마 친해진 지금 나는 이 방법을 통해서 빠르게 해결한다.