본문 바로가기

Backend/IDE

Util 공부를 위한 Clone Project 생성

반응형

 

기존 레거시 업무에서 JDK 1.8 버전과 Spring 4.3.16, Maven으로 구성되어 있어 버전과 Builder를 변경하여 테스트 해보고자 함

 

개발환경

IDE : IntelliJ Ultimate

Spring : Spring Boot 3.1.3

JAVA : JDK 17.0.8

Builder : Gradle

의존성은 가장 기본이자 필수라고 생각되는 Lombok 사용

 

 

 

이슈 1 ) initial build가 되지 않는다.

에러내용

Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
...
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Unrecognized option: --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED

해결방법 >

File\Settings\Build...\Build Tools\Gradle에서 Build and run 부분과 Gradle JVM의 버전이 잘못되어있어 수정해줌

Build 잘 됨

 

이슈 2 ) JSP을 사용해야 하는데 Jar로는 배포가 불가능 하다 하여 War로 배포를 해야 한다.(패키징 jar에서 war로 변경)

Jar War
- 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷
- JRE(JAVA Runtime Environment)만으로도 실행 가능
- 웹 애플리케이션을 구성하는 자바 클래스, 자바 서버 페이지, 관련 XML 파일 등을 묶은 압축 파일 포맷
- 원하는 구성을 할 수 있는 Jar와 달리 War는 WEB-INF 및 META-INF 디렉토리로 사전 정의된 구조를 사용
- 별도의 웹서버(WEB)나 웹 컨테이너(WAS) 필요

해결방법 > 

1. build.gradle 수정

// bulid.gradle
plugins {
	...
	id 'java'
	id 'war'
}

bootWar {
    enabled = true
}

dependencies {
	...
    implementation 'org.springframework.boot:spring-boot-starter-tomcat'
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    implementation 'javax.servlet:jstl'
    ...
}

2. 소스 설정 파일 수정(application.yml 혹은 application.properties)

// .yml인 경우
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

// .properties인 경우
spring.mvc.view.previx=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

 

3. JSP 디렉토리 경로 생성

src/webapp/WEB-INF 경로는 고정

이후 하위 경로는 custom가능

 

이슈 3 ) VM 경고

빌드는 성공하는데 경고가 떠서 추후 어플리케이션에 문제가 발생할 가능성도 있기에 해결해 두려고 한다.

Java HotSpot(TM) 64-Bit Server VM warning:
Sharing is only supported for boot loader classes because bootstrap classpath has been appended

찾아보니 다음과 같은 내용이 있었다.

해당 오류는 JDK 1.8 버전 이후에 추가된 기능으로, 클래스 로딩 시 Class Data Sharing(CDS) 기능을 사용하면 발생합니다. 이 오류는 경고 메시지이며, 어플리케이션에 직접적인 영향을 주지는 않습니다. 하지만 성능 개선을 원하는 경우 다음과 같은 방법으로 오류를 없앨 수 있습니다.
1. -Xshare:off 옵션을 사용하여 CDS 비활성화
2. 클래스 로딩 전에 CDS를 직접 사용하여 미리 클래스 정보 공유파일을 생성하여 사용
자세한 내용은 OpenJDK 공식문서를 참고하는 것이 도움됩니다.

해결방법 >

Settings의 아래와 같은 메뉴에서 체크박스를 해제한다.

참조) Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.오류 발생시

체크박스를 해제하여 해결 가능

 

이슈 4 ) Error:Auto build failure: Cannot determine path to 'tools.jar' library for 17(경로)

원인 1 : 환경변수 JAVA_HOME이 없을때

1) Windows : 내컴퓨터\속성\고급시스템속성\환경변수 - JAVA경로로 환경변수 추가

2) MAC : 기존 자바 버전이 있다면 충돌 방지를 위해 주석처리 하고 아래에 새로 추가

$vi ~/.zshrc
# Java 17
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=${PATH}:$JAVA_HOME/bin:

원인 2 : IntelliJ 버전이 맞지 않을때

생성하려는 버전은 Java 17 버전인데 IntelliJ 2020.1.2버전에서는 Java 14까지만 지원이 된다.

업데이트 진행(업데이트 방법 소개 출처)

 

반응형

'Backend > IDE' 카테고리의 다른 글

[IntelliJ] Context path 확인하기  (0) 2023.09.14
[IntelliJ] Gradle Error  (0) 2023.09.11
STS4  (0) 2023.08.17
IntelliJ Spring Project(Maven) 생성(3)  (0) 2023.08.11
IntelliJ Spring Project(Maven) 생성(2)  (0) 2023.08.11