java 16

이클립스 에러 해결 Could not initialize class com.thoughtworks. xstream.converters.collections.PropertiesConverter

문제 발생 이클립스에서 STS 플러그인 설치후 'Spring Legacy Project'로 프로젝트를 새로 생성하려고 했다. 프로젝트 정보를 기입후 'Next'를 누르니 아래의 에러가 발생했다. An error has occurred. See error log for more details. Could not initialize class com.thoughtworks.xstream.converters.collections.PropertiesConverter 개발 환경은 JDK 8, 이클립스 2021.9 버전, STS 3 이다. 해결 방법 스프링 버전과 JDK 버전간의 호환 문제로 간주되어 JDK 11로 버전업하였고, 이에 맞게 이클립스에서 [Window] > [Properties[ > [Java] > ..

이클립스 에러 해결 The selected JRE does not support the current compiler compliance level of 16

문제 발생 이클립스에서 JDK1.8을 연결하려고 하니 아래와 같은 에러가 발생한다. (맨 끝자리의 숫자 16은 환경에 따라 바뀔 수 있다.) The selected JRE does not support the current compiler compliance level of 16 해결 방법 알아보니 컴파일러에 설정된 Java 버전과 달라서 나는 오류였다. [Java] > [Complier]를 보면 현재 "16"으로 설정되어 있다. JDK Compliance는 호환되는 JRE를 설치하고 활성화해야 한다. 즉, 설치된 JDK와 컴파일러 버전을 서로 일치시키면 된다. 내 경우 JDK 버전과 동일하게 1.8로 일치시키니 해당 오류 문구가 사라졌다.

자바의 데이터 타입(Primitive type, Reference type)

타입(Data type)이란 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것이다. 자바에서 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive type) 기본형 타입은 아래 표와 같이 총 8개의 타입들이 존재한다. 자바에서 미리 형식을 정의하여 제공하고 있으며, 기본값이 존재하기 때문에 Null 개념이 존재하지 않으므로 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용하면 된다. 기본형 타입은 실제 값을 저장하는 공간으로, 스택(Stack) 메모리에 저장된다. 주로 문법상의 에러(예를 들어 ;을 안붙였다든지)로 빨간 줄이 쳐지는 경우처럼 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러..

Backend/Java 2022.01.31

자바의 구동 원리와 JVM(Java Virtual Machine)

자바 프로그램의 구동 원리 소스코드를 작성한다. (.java 확장자의 소스 파일) 컴파일러(javac.exe)가 바이트코드로 변환한다. (.class 확장자의 클래스 파일) 런처(java.exe)로 자바 가상 머신을 구동시킨다. 자바 가상 머신이 바이트코드를 해석하여 자바 프로그램이 실행된다. 위 순서에서 바이트코드(bytecode)는 자바 가상 머신이 이해할 수 있는 언어로 변환된 코드다. 자바 가상 머신만 설치되어 있다면 바이트코드는 어떤 운영체제에서라도 실행될 수 있다. 자바 가상 머신(JVM) 일반 프로그램은 "운영체제"가 프로그램을 실행시킨다. 반면 자바 프로그램은 운영체제가 JVM을 실행시키면 "JVM"이 프로그램(클래스 파일)을 실행시킨다. 즉, 자바 프로그램의 클래스 파일들은 운영체제에서 ..

Backend/Java 2022.01.26

Java + Gradle 프로젝트에서 JUnit 테스트하기

지금부터 IntelliJ에서 Java + Gradle 프로젝트를 생성한 후 JUnit으로 테스트를 해볼 것이다. 1. 프로젝트 생성 IntelliJ에서 메뉴 [File] - [New] - [Project]로 들어가면 'New Project' 창이 뜬다. Junit 라이브러리를 사용해서 테스트를 할 것이기 때문에, 직접 jar를 받아 추가하기보다는 Maven 또는 Gradle 빌드 도구를 이용해서 의존성을 쉽게 관리하는 것을 추천한다. 나는 Gradle을 이용할 것이다. GroupId와 ArtifactId는 원하는 식별자를 입력하면 된다. 실제 프로젝트라면 룰에 맞춰야 한다. 식별자 네이밍에 대한 글을 참고하자. (https://johngrib.github.io/wiki/groupId-artifactId/..

스프링 개발환경 구성하기 (1) JDK 설치 및 환경변수 설정

📢 2022년 1월 기준으로 포스팅 내용을 업데이트하였습니다. 최근글 : 스프링 부트 개발환경 구성하기 (1) OpenJDK 17 설치 지금부터 Java 11, Eclipse, Tomcat 9, Maven을 순서대로 설치할 것이다. 아래 사진처럼 모두 C:\dev 폴더 안에 설치해서 관리하기 편하게 만드려고 한다. 앞으로 진행할 포스팅 순서는 아래와 같다. JDK 11 설치 (현재 포스팅) 이클립스 설치 톰캣 9 설치 메이븐 설치 JDK 설치 Oracle 사이트에서 원하는 버전의 JDK를 설치하자. 2022년 1월 기준으로 JDK 17까지 나왔지만, 내가 겪은 프로젝트나 공공기관에서는 아직까지 JDK 8을 많이 쓰는 추세이다. (= Java SE 8 = JDK 1.8) 이전 버전을 사용하려면 Java A..