STS 프로젝트를 생성했다면 컴퓨터의 환경과 프로젝트 환경을 맞춰줘야 한다. 자바는 기본적으로 1.6, 스프링은 3.1.1.RELEASE 버전으로 되어 있기 때문에 Java를 설치된 버전과 맞춰주고 스프링은 최신 혹은 현재 상황에 맞는 버전으로 맞춰 줄 필요가 있다.

 

자바 버전 맞추기

 기본적으로 STS를 생성하면 JDK 버전이 1.6으로 맞춰져 있다. 그 이상의 버전을 사용할 경우 STS의 설정을 바꿔 줄 필요가 있다. 필자는 자바 11을 사용하기 때문에 1.6 → 11로 변경한다.

 

 윈도우 익스플로러를 켜고 "C:\Program Files\Java"로 들어가면 설치된 자바 버전을 볼 수 있다. 필자의 컴퓨터는 자바 11이 설치되어 있는 것을 볼 수 있다.(운영체제가 32bit 환경일 경우 Program Files(x86)으로 들어가야 한다.)

 

 

클릭해서 크게보실 수 있습니다.

 프로젝트를 우클릭하여 Properties를 클릭한다. 좌측 검색창에 "compiler"를 검색하여 "Java Compiler"를 클릭한다. 기본적으로 "Use compliance from execution..."이 체크되어 있는데 이를 체크해제한 후 바로 아래에 Compiler compliance level을 변경해준다. 필자는 자바 11이기 때문에 11로 변경했다. 아래 Apply 버튼을 눌러 변경된 설정을 적용한다.

 

 

 좌측 상단의 검색창에 build를 검색해 Java Build Path로 들어간다. 상단 리본 메뉴가 Libraries인 것을 확인하고 "JRE System.."을 선택하고 우측 메뉴에서 Edit을 클릭한다.

 

 

 기본값인 1.6으로 설정되어 있는데 워크 스페이스 기본 값 (11)로 변경한다.

 

 좌측 상단 검색창에 "facets"를 쳐서 "Project Facets"를 클릭한다. 목록에서 "Java"의 버전을 클릭해 11로 맞춰주고 Apply를 눌러 적용시킨 후 창을 종료한다.

 

 

pom.xml 수정

변경 전
변경 후

 pom.xml에서는 자바 버전과 스프링 버전을 수정해야 한다. 자바 버전의 경우 위에서 언급했듯 기본값이 1.6으로 잡혀 있기 때문에 11로 변경해준다. 스프링의 경우 Maven Repository 사이트를 참조해서 최신 버전이나 원하는 버전을 넣는다. (Maven Repository - Spring Context 바로가기)

 

 필자는 2022-02-15 기준으로 5.2.19 버전을 넣었다.

 

 

 

 추가적으로 코드 가장 하단에 있는 plugin의 자바 버전도 수정해준다.

변경 전
변경 후

 

  모두 수정하였으면 ctrl + s를 눌러 프로젝트를 업데이트한다. 하나라도 버전 변경을 잊어버릴 경우 프로젝트를 수동으로 업데이트할 때 버전이 다시 초기화되어 버리는 현상을 볼 수 있을 것이다. 실수하지 않고 모두 바꾸도록 하자.

 톰캣을 설치한 직후 자주 볼 수 있는 에러 메세지다. Tomcat은 기본적으로 8080포트를 가지는데 이미 해당 포트를 사용하고 있는 프로세스가 있기 때문에 다른 포트로 변경하라는 의미이다. 톰캣의 포트 번호를 변경해주면 간단히 해결되는 문제다.

 

 

 사용중인 포트 확인

 현재 8080포트의 사용 여부는 netstat 명령어를 통해 확인할 수 있다. 여기서 추가로 8080이 사용중인 프로세스를 확인하고 싶다면 tasklist 명령어로 확인할 수 있다. netstat에서 얻은 pid를 검색하면 pid가 3372인 task는 "TNSLSNR.EXE"인 것을 확인할 수 있다.

 

 

 pid를 알아냈다면 작업관리자의 서비스 탭에서도 확인할 수 있다. 정렬 기준을 pid로 잡고 3372를 찾아보면 "OracleXETNSListener"라는 프로세스를 확인할 수 있다. 해당 프로세스는 이름에서 확인할 수 있듯 오라클로서 오라클 DBMS는 설치할 때 기본적으로 8080포트를 가지기 때문에 톰캣과 포트가 겹쳐버린 상황이라는 것을 알 수 있다.

 

 

 포트 번호 변경

 다른 포트로 변경하기 위해 먼저 find 명령어로 사용하려는 포트가 사용중인지 확인한다. 위에서 8080을 검색한 결과와 달리 아무것도 뜨지 않는다면 현재 사용중이지 않은 포트라는 뜻이다. 

 

 

 변경할 포트를 정했다면 이클립스의 servers 탭에서 추가해놓은 톰캣을 더블클릭한다.

 

 

  HTTP/1.1 항목의 "8080"을 원하는 포트로 바꿔준 뒤 저장(Ctrl+S)한다.

 이클립스에서 스프링 프로젝트를 생성했을 때 아무것도 하지 않았는데도 프로젝트에 빨간 불이 들어올 때가 있다. 

 

 

 프로젝트를 펼치고 에러가 있는 파일을 찾아 계속 하위 폴더로 이동하면 home.jsp에 오류가 있음을 확인할 수 있다. 에러가 나는 코드에 마우스를 대보면 "Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core" 라는 에러 메시지를 출력하고 있다.

 

 

 이 오류는 프로젝트에 JSTL에 대한 의존성이 주입되어 있지 않기 때문에 발생한 에러다. Maven Repository에서 JSTL 의존성에 대한 최신 버전(https://mvnrepository.com/artifact/javax.servlet/jstl)을 복사한 뒤 프로젝트의 pom.xml에 들어가 <Dependencies> 태그 내부에 붙여넣기한다. 

 

 

 마지막으로 pom.xml을 저장하거나 [프로젝트 우클릭 → Maven → Update Project..]를 선택해주면 빨간불이 사라진 것을 확인할 수 있다.

 

 

 컴퓨터를 포맷해서 자바, 이클립스, 스프링을 설치하고 처음 프로젝트를 생성하면 반드시 이 에러가 발생했다. 하지만 처음 한 번만 의존성 주입을 해주면 다음 프로젝트를 생성할 때 부터는 더 이상 이 에러가 발생하지 않았다.

 이클립스에서 스프링 프로젝트를 시작할 때 많이 겪는 에러가 아닐까 한다. 이 에러 메시지로 구글링을 하면 여러 가지 에러 발생 원인과 해결방법이 존재한다. 그 중 내 컴퓨터 환경에서 이 에러가 발생한 원인은 자바와 이클립스의 버전이 맞지 않았기 때문이었다.

 

에러 발생 상황

 [File - new]으로 스프링 프로젝트를 생성하는 화면이다. 여기서 Spring MVC Project를 선택하고 Next 버튼을 누르면 에러가 발생할 때가 있다. 예전에 마주하고 해결했던 에러이기에 아차하고 금방 처리해서 스샷은 없지만 에러 메시지 창에 아래와 같은 메시지를 출력하며 더 이상 프로젝트 생성이 진행되지 않는다.

 

"An error has occurred. See error log for more details. java.lang.ExceptionInInitializerError"

 

 

에러 발생 원인

 이 에러가 일어나는 이유는 이클립스 버전과 자바 버전이 맞물리지 않기 때문이다. 이클립스 버전 2020-06 까지는 자바 8을 지원했지만 2020-09부터는 자바 11만 지원한다. 물론 기존의 자바 코딩을 하는데 문제는 없다. 이것은 스프링에 국한된 이야기다.

 

 해결 방법

 1. Java 8을 사용하면서 Eclipse 2020-09 이상 버전일 경우

 → Java 11을 설치하고 이클립스의 jdk 경로를 다시 잡아준다..

 

 2. Java 8을 사용해야만 하는 환경일 경우

 → Java 8을 사용해야만 하는 환경이라면 이클립스 자바 8을 지원하는 이클립스 2020-06버전을 설치해서 사용한다.

 

 3. Java 8과 11이 같이 설치되어 있는 경우

 → 이클립스의 버전이 2020-06 이하라면 이클립스의 jdk 경로를 java 8로 잡아준다. 

 → 이클립스의 버전이 2020-09 이상이라면 이클립스의 jdk 경로를 java 11로 잡아준다.

 

 이클립스, 자바 버전을 제대로 볼 줄 모르겠고 경로 잡는 것도 힘들다라고 한다면 프로젝트나 설정을 백업한 뒤 이클립스와 자바를 모두 삭제하고 맞는 버전으로 다시 설치하는 것도 좋을 것이다.

 웹 서버를 공부해가며 짧막한 테스트 코드를 작성했을 때 웹 브라우저에 원하는 결과가 나오지 않고 글씨가 깨져 보이는 현상은 누구라도 한 번은 겪어봤을 것이다. 이런 현상은 대부분 이클립스 인코딩 방식이 UTF-8이 아니기 때문에 발생하는 것이다. 서론에서 짧게 인코딩이란 무엇인지, UTF-8은 또 무엇인지 알아보고 설정하는 과정을 보도록 하자. 설정하는 방법만 보고자 한다면 바로 스크롤을 내리자.

 

 Encoding

 데이터를 전송할 때 암호화하는 것을 인코딩이라 한다. 반대로 데이터를 수신한 측에서 암호화 된 데이터를 부호화하는 것을 디코딩이라 한다. 웹 환경에서 송수신의 주체는 웹 브라우저와 웹 서버가 된다.

 

 MS949, EUC-KR, UTF-8

 이클립스에서 웹 개발을 할 때 사용되는 html, jsp등의 텍스트 파일은 기본적으로 "MS949"이라는 문자셋으로 인코딩되되도록 되어 있는데 여기서 MS949는 EUC-KR의 확장된 문자셋이다. EUC-KR은 UTF-8과 더불어 대표적인 한글 문자셋으로 EUC-KR은 문자당 2byte로 한글, 한국에서 통용되는 일부 한자, 영문을 표현할 수 있고, UTF-8은 1~4byte의 가변 길이를 가지며 유니코드를 표현할 수 있다. 유니코드는 전세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

 

 UTF-8을 사용하는 이유

 UTF-8은 유니코드를 사용하기 때문에 전 세계 모든 언어와 호환된다는 장점이 있다. 때문에 전 세계에서 UTF-8 방식이 가장 많이 사용되고 있고 유니코드를 지원하는 프로그램의 경우 대부분 UTF-8을 사용한다.

 

 


 

 

 이클립스 UTF-8 환경으로 설정하기

 이후로 진행하는 모든 환경 설정은 [Window - Prefeerences]에서 진행한다.

 

 

 Workspace 인코딩 설정

 좌측 최상단에서 "workspace"를 입력하면 메뉴 중에 문자열이 일치하는 메뉴가 나타나는데 여기서 [General → Workspace]를 선택한다. 그리고 하단의 Text file encoding에서 Other를 선택하고 목록에서 "UTF-8"을 선택한다.

 

 

 Java, JSP 인코딩 설정

 검색창에 "content types"를 검색한다. 목록에서 [General → Content Types]를 클릭한 후 중앙의 박스에서 Java Class File을 클릭한다. 아래의 Default encoding에 "UTF-8"을 입력한 후 Update를 눌러준다.

 

 

 위 화면에서 그대로 진행한다. 중앙 박스에서 Text 카테고리를 펼쳐서 JSP를 찾아서 선택한다. Default Encoding이 "ISO-8859-1"로 되어 있는데 UTF-8로 수정한 뒤 Update를 눌러준다.

 

 

 "HTML"을 검색한 후 [Web → HTML Files]를 클릭한 후 중앙에 보이는 Encoding을 "UTF-8"로 설정한다.

 

 

 위 화면의 검색결과에서 [Web → JSP Files]를 선택한 후 Encoding을 "UTF-8"로 변경한다.

 웹 개발을 시작하려면 웹 어플리케이션 서버(WAS; Web Application Server)가 있어야 하는데 대표적으로 아파치에서 제공하는 Tomcat과 마이크로 소프트에서 제공하는 IIS가 있다. 여기서는 이클립스에서 가장 일반적으로 사용되는 Tomcat을 설치하는 방법에 대해 다룬다. 

 

 

 

 1. 아파치 톰캣 다운받기

https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org

 

 톰캣을 다운받기 위해서 아파치 공식 홈페이지에 접속한다. 

 

 

 위 링크는 9.0으로 연결되는데 9.0 외에 다른 버전을 받아야 한다면 좌측 Download 카테고리에서 원하는 버전을 선택한다.

 

 

 위 링크로 들어오면 다운로드할 수 있는 목록을 볼 수 있는데 현재 컴퓨터 환경에 맞는 것을 선택한다. 필자는 64bit 아키텍쳐이기 때문에 "64-bit Windows zip"를 선택했다.

 

 

 다운받은 파일의 압축을 푼다. 다운로드 폴더나 바탕화면 같이 아무 곳에나 저장하기 보다는 C드라이브에 전용 폴더를 만들고 모아 놓는 것이 관리하기 좋다. 필자는 C 드라이브에  devTools 폴더를 생성해 압축을 풀었다.

 

 

 이클립스에서 톰캣에 대한 설정을 하는데 기존 콘솔 창이 있던 하단을 보면 Servers 탭이 있다. 여기서 "No servers are..."을 클릭한다.

 

 

 만약 servers 탭이 없다면 [Windows → Show View → Servers]를 눌러 Servers 탭을 활성화시킬 수 있다.

 

 

 서버를 생성하려면 서버 타입을 선택해야 하는데 우리는 위에서 Tomcat 9를 다운받았기 때문에 Apache 폴더를 펼쳐 "Tomcat v9.0 Server"를 선택한다. 서버 타입을 선택하면 Next가 활성화 되니 눌러주자.

 

 

 Tomcat installation directory에 아까 알집을 풀어준 경로를 ctrl+c, v 해준다. "Browse.."를 눌러 찾아도 상관없다. 마지막으로 finish를 눌러 서버 생성을 마친다.

 

 

 서버 생성을 마치면 하단 Servers 탭에 서버가 추가된 것을 확인할 수 있고 프로젝트 목록에 Servers가 추가된 것을 확인할 수 있다.

[OS : Windows 10]

[Java : 11]

[Eclipse version : 2021-12(4.22.0)] 

 

목차(바로가기)

1. Java 설치

2. Eclipse 설치

3. Spring Framework 설치

 

 윈도우를 기준으로 스프링을 시작하기 위해 Java, Eclipse, Spring을 설치하는 과정입니다.

 

 

 자바, 이클립스 버전에 주의!

 여기서 굳이 자바와 이클립스 버전을 설명하는 이유는 버전이 잘 맞물리지 않으면 스프링 프로젝트를 생성할 때 "An error has occurred. See error log for more details. java.lang.ExceptionInInitializerError"라는 에러를 보게 되기 때문이다. 이 에러를 해결하기 위해 구글링을 하면 ini 파일을 수정한다던가 이클립스 경로에서 clean을 한다던가하는 해결책이 존재하는데 별 짓을 다해도 해결이 쉽지 않다. 이 에러가 일어나는 이유는 이클립스와 자바 버전이 맞물리지 않기 때문이다.

 

 이클립스는 3개월 주기(3, 6, 9, 12)로 새로운 패키지가 제공되는데, 2020-09 버전부터는 자바 8이 아닌 자바 11을 사용해야 스프링을 사용할 수 있다. 자바 8을 사용해야만 하는 환경이라면 2020-06버전을 다운받아야 스프링 프로젝트를 생성할 수 있다.

 

 

1. Java 설치

 자바를 다운받기 위해 오라클 사이트에 접속한다.

 (바로가기 : https://www.oracle.com/java/technologies/)

 

 해당 링크로 접속하면 바로 최신 버전의 자바를 버전별로 보여준다. 필자는 이클립스 최신버전을 설치할 예정이기 때문에 Java 11 버전인 위에서 2번째 "Java SE 11.0.14(LTS)"을 선택했다.

 

 

 다음 페이지에서 Windows 탭을 선택한 후 첫 번째 인스톨러를 다운받는다. 다운로드를 위해서는 로그인이 필요한데 자바를 비롯해 오라클에서 제공하는 프로그램은 다운받을 때마다 로그인이 필요하니 가입해두자.

 

 (설치는 별거 없기 때문에 생략)

 

 


 

 

2. Eclipse 설치

 이클립스를 다운받기 위해 사이트로 이동한다. 이 글을 보는 시점에서 가장 최신의 Eclipse를 다운받고자 한다면 홈페이지를 경유해 우측 상단의 Download를 선택하면 된다.(첫 번째 링크 선택) 개발 환경에 의해 버전에 제약이 있어 이전 버전으로 다운로드 하고자 할 경우 두 번째 링크로 이동해서 원하는 버전을 찾아서 설치하도록 하자. 이 글은 전자를 기준으로 한다.

 

 (홈페이지 바로가기 : https://www.eclipse.org/)

 (다운로드 페이지 바로가기 : https://www.eclipse.org/downloads/packages/)

 

 

 먼저 홈페이지로 이동한 후 우측 상단의 Download를 클릭한다.

 

 

 이동한 페이지에서 좌측 하단에 있는 Get Eclipse IDE 2021-12의 Download x86_64를 클릭한다.

 

 

 Download를 선택해 설치 툴을 다운받는다.

 

 

 다운받은 툴을 실행시키면 위와 같은 화면이 나온다. 목록에서 위에서 2번째 "Eclipse IDE for Enterprise java..."를 선택한 후 원하는 경로를 잡고 INSTALL을 눌러 설치한다.

 

 


 

 

3. Spring Framework 설치

 이클립스를 실행한 후 상단 리본 메뉴에서 [Help → Eclipse Marketplace..] 선택

 

 

 검색창에 "spring"을 검색하고 "Spring Tools 4.."를 install한 뒤 다음 화면에서 "install More"를 클릭해 메인 화면으로 다시 돌아온다. 메인에서 "Spring Tools 3 Add On For..."를 install하고 하단의 "Install Now"를 선택한다. 

 

 

 위와 같은 화면이 나왔다면 모두 체크된 상태인지 확인하고 "confirm"을 클릭한다.

 

 

 라이센스에 동의하고 finish를 클릭해 설치를 진행한다. 이클립스 하단의 상태표시줄 우측을 보면 다운로드 진행 현황을 볼 수 있다. 다운로드가 끝나면 이클립스를 재시작하라는 메시지 창이 나오니 재시작을 수행해준다.

 

 

 스프링 프로젝트를 생성하기 위해 자바 프로젝트를 생성할 때처럼 [File - New]로 진입해도 Spring이 보이지 않는다. 현재 이클립스 레이아웃이 EE에 맞춰져 있기 때문이다. "Other"를 선택해 Spring을 직접 찾아도 되지만 Spring 프로젝트를 진행하기에 최적화 된 레이아웃을 따로 선택하자.

 

 

 상단 리본 메뉴에서 우측 끝으로 가면 위와 같이 창문모양 아이콘을 볼 수 있다. 이 아이콘을 클릭하면 이클립스의 레이웃을 원하는 개발환경에 맞춰 변경할 수 있다. Spring을 개발할 것이기 때문에 Spring을 선택해준다.

 

 

 스프링을 선택하면 좌측 메뉴에 Spring 프로젝트를 생성하는 메뉴가 생긴 것과 하단에 Servers 탭이 추가된 것을 볼 수 있다. [File → New]로 생성가능한 프로젝트 목록에도 스프링이 추가된 것을 볼 수 있다. 한 번 이상 선택된 Perspectives는 단축키 Ctrl + F8을 통해서 빠르게 전환할 수 있다.

 

 Spring 설치는 끝났다. 이제 Spring 프로젝트를 생성할 수 있지만 서버로서 역할을 하려면 Apache Tomcat이 있어야 한다. 톰캣 설치가 필요하다면 다음 포스팅을 참조하도록 하자.

 

 

[Server] 아파치 톰캣(Apache Tomcat) 9 설치하기

 웹 개발을 시작하려면 웹 어플리케이션 서버(WAS; Web Application Server)가 있어야 하는데 대표적으로 아파치에서 제공하는 Tomcat과 마이크로 소프트에서 제공하는 IIS가 있다. 여기서는 이클립스에

ku-develog.tistory.com

 

+ Recent posts