기존 레거시 업무에서 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 |