Category: Programming

Mac 에서 JAVA_HOME 찾기

참조: http://stackoverflow.com/questions/6588390/where-is-java-home-on-osx-sierra-10-12-el-captain-10-11-yosemite-10-10

Mac 에는 여러버전의 Java 가 설치되어 있습니다. 그런데, 가끔씩 JAVA_HOME 이 어디인지를 알고 싶을때가 있습니다. 그럴때 다음과 같이 하면 알수 있습니다.

 

 

Java 설치

이 글은 Java 를 리눅스에 설치하는 법을 다룹니다.  Java 는 JDK, JRE가 존재하는데 WAS 서버 운영을 위해서는 JDK를 설치하는게 여러모로 좋습니다.

다운로드

다운로드는 Oracle 홈페이지의 Java 페이지에서 받을 수 있습니다. 보시면 다양한 패키지를 제공하는데, 저는 64bit 리눅스 tar.gz 파일을 다운로드 받았습니다.

설치

tar.gz 파일을 다운로드 받았다면 설치는 압축을 해제하는 것으로 사실상 끝이 납니다.

설정하기

자바 설치가 끝났다면 이를 시스템이 인식할 수 있도록 설정해줍니다. 설정은 자바 홈 디렉토리, 패스, 클래스패스등을 입니다.

이를 매번 입력하기 보다는 /etc/profile 맨 아래에 적어주면 부팅할때마다 자동적으로 시스템 전체에 적용 됩니다.

pom.xml Plugin execution not covered by lifecycle configuration 오류

앞에서 mave timestamp 의 TimeZone 변경을 위해서 build-helper-maven-plugin 를 사용했는데 Eclipse 에서 다음과 같이 오류가 난다.

build-helper-maven-plugin Eclipse 오류
build-helper-maven-plugin Eclipse 오류

위 오류내용은 다음과 같다.

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin: 1.11:timestamp-property (execution: timestamp-property, phase: validate)

Eclipse 는 오류를 표시했지만 maven 은 정상적으로 동작한다. 이는 Ecliplse 의 m2e 커넥터의 lifecycle mapping 정보를 명확하게 해야하는데 이것이 없어서 오류로 표시하는 것이다. 다음 URL 에 관련 내용이 있다.

내용을 보면 <pluginManagement> 를 이용해서 lifecycle-mapping 을 설정해주어야 한다. 위 내용을 기반으로  build-helper-maven-plugin 의 execution 에 대해서 mapping 을 지정해주면 해결된다.

위와 같이 설정을하면 Eclipse 의 오류가 사라진다.

 

Maven timestamp 에 timezone 변경하기

maven 은 build timestamp 를 변수로 지원한다. 하지만 자세히 보면 이 timestamp 는 UTC timezone 에 맞춰져 있다. maven 에서 timestamp 는 기본적으로 UTC timezone 을 기반으로 한다. 그런데 이것을 다른 timezone 으로 변경할려면 어떻게 해야할까?

build-helper-maven-plugin

maven 에선 많은 plugin 을 지원한다. build-helper-maven-plugin 은 우리가 필요하는 기능인 timestamp 에 timezone 변경을 지원한다. 변경된 timezone 의 시간을 표시할 변수와 timestamp format, timezone 등을 지정하면 여기서 지정한 변수를 사용할 수 있게 된다.

위와같이 current.time 변수에 한국시간의 timezone 으로 지정한 timestamp 값을 할당해주고 maven-war-plugin 에서 warName 태그에서 current.time 변수를 사용해주면 된다.

war 파일이름에 TimeStamp 찍기

Maven 을 이용하면 자동으로 컴파일을 해주고 war 파일로 만들어 준다. 그런데, 이때에 war 파일에 TimeStamp 를 찍을 수 있다. war  파일명이 project.name-timestamp.war 형식으로 파일을 작성하도록 할수 있다. 방법도 대략 두가지 방법이 있다.

maven 자체 기능

maven 3.0 이상이라면 자체 기능을 이용할 수 있다. properties 에 timestamp 와 maven.build.timestamp.format 을 지정하고 build 영역에서 파일명을 지정해주면 된다. 예를들면 다음과 같다.

위와같이 설정하고 maven build 를 하면 다음과 같이 출력되는 것을 볼수가 있다.

maven-war-plugin 으로 war 파일명 지정

이것은 사실 위 방법을 쓴다면 사용할 일이 별로 없다. 하지만 war 파일을 생성할때에 많은 옵션을 주고 싶다면 이 플러그인을 사용하는게 좋다. 이를 사용하면 build 영역에서 finalName 을 지정하지 않고 이 플러그인에서 지정해주면 된다.

결과는 처음과 같다.

Spring MVC hello world Example in STS

spring pivotal이 글은 STS(혹은 Eclipse) 를 사용해서 Hello World 를 만드는 법에 대한 것이다.  Eclipse, STS 를 설치했다면 자체적으로 간단한 샘플 프로젝트를 제공 한다. 아무런 설정도 필요없고 간단하게 패키지명만 입력해주면 샘플 프로젝트가 제공되고 브라우저를 통해서 확인할 수 있다.

Eclipse 에는 Spring IDE 플러그인이 설치된 것으로 가정한다.

Spring Legacy Project

STS나 Eclipse 를 설치했다면 Spring Legacy Project 를 제공한다. File 메뉴 -> New -> Other.. 를 클릭하면 나오는 팝업창에서 ‘Spring’ 폴더를 클릭하면 다음과 같은 화면에 ‘Spring Legacy Project’ 가 보입니다.

Spring Legacy Project 생성 팝업
Spring Legacy Project 생성 팝업

이제 ‘Next’ 를 누르면 다음과 같은 화면이 나온다.

Spring 템플릿. 그런데 MVC Project 가 없다.
Spring 템플릿. 그런데 MVC Project 가 없다.

하지만 위 화면과 같이 나올 수도 있다. 원래는 MVC Project 가 나와야 하는데, 보이지 않는다. 그럴때는 위 화면에 ‘Configure templates…’ 를 클릭한다.

Template Projects 수정
Template Projects 수정

위 화면과 같이 두가지를 순차적으로 삭제 해준다. 위와같이 하면 이전화면이 다음과 같이 나온다. 삭제하고 난후에도 이전화면에서 ‘Spring MVC Project’ 가 나타나지 않으면 Eclipse 를 재시작해준다.

Spring MVC Project 생성
Spring MVC Project 생성

위 화면과 같이 Project name 에는 ‘HelloWorld’ 를 적어주고 아래 Template 은 ‘Spring MVC Project’ 를 선택하고 ‘Next’ 를 해준다.

패키지명 작성
패키지명 작성

위와같이 패키지명을 입력하고 난 후에 Finish 를 누르면 Hello World 프로젝트가 작성된다.

Spring MVC Project 로 작성된 Hello World
Spring MVC Project 로 작성된 Hello World

이를 실행시키면 Hello World 를 브라우져에서 확인해 볼수 있다.

UTF-8 로 출력하기

이는 Deployment Discriptor 인 Web.xml 파일에 Encoding 설정을 UTF-8 로 설정해 줘야한다. 이는 다음과 같다.

Session 공유 테스트 코드

WAS 서버를 세팅할때에 Session 을 공유하도록 가끔은 구성할 때가 있다. 요즘은 spring-data-redis 를 이용해서 Redis 에 Session 을 저장하도록 지원하고 있지만 WAS  서버 자체적으로 Session 을 공유하도록 설정해서 운영할 수 있다.

이때 과연 WAS  서버들간 Session 이 제대로 공유되고 있는지를 확인할 필요가 있는데 이때 사용할 수 있는 코드다. 참고로 이 코드는 다음의 github 저장소에서 가지고 왔다.

먼저, Controller 를 다음과 같이 수정한다.

그리고 다음과 같이 home.jsp 파일을 수정해준다.

위와같이 수정하고 실행을하면 세션관련된 내용을 출력되고 세션 공유를 테스트해 볼 수 있다.

JBoss EAP 에서 세션 공유

코딩만으로는 Session 공유가 되지 않는다. WEB-INF 디렉토리에 ‘jboss-web.xml’ 을 만들고 다음과 같이 작성한다.

그리고 web.xml 파일에 다음을 추가해 준다.

위와 같이 하면 웹 애플리케이션에서 세션이 공유된다.

Spring 개발을 위한 Eclipse 세팅하기

eclipse ide

이제 Java 개발을 하기위해서는 Eclipse가 필수가 됐다. 아니 Java 뿐만이 아니라 웬만한 언어들과 개발에 필요한 각종 인프라들을 제공해주는 단순한 하나의 IDE 가 아닌 개발환경 그 자체가 되어가는 듯한 느낌이다.

Java 개발에 거의 표준이 된 Spring Framework 를 이용한 개발을 할때도 Eclipse도 필수중에 필수이다.

Spring 개발을 위해 필요한 Eclipse 세팅에 대한 글이다. 초보자분들을 대상으로 함으로 이미 많은 경력을 쌓은 개발자는 읽을 필요가 없다.

준비물

현시점(2016.05)에서 안정적인 자바 개발을 위한 프로그램과 버전들은 다음과 같다.

  • Jdk 1.8
  • Maven 3.3.9
  • Eclipse 4.5.2 (mar2), STS 3.7.3

한가지 알아야 할 것은 STS 3.7.3 이다. Springsource Tools Suites 로서 Spring 개발사(?)에서 Eclipse 와 Spring Tools Suites 를 통합시킨 것이다. Eclipse 와 완전히 동일한 환경이지만 STS를 설치하면 별도의 Spring 을 위한 설치작업을 할 필요가 없기 때문에 많이 사용한다.

여기서는 Eclipse 4.5.2 를 가져다 Spring 을 위한 환경을 구축하는 것으로 하겠다. 설치와 환경설정으로 나뉘어 서술할 것인데, 설치를 제외한 환경설정 부분은 Eclipse 나 STS나 동일하기게 적용된다.

마지막으로 시스템은 Windows 64bit 을 사용하는 것으로 한다.

설치하기

Jdk 1.8 설치

먼저, Jdk 1.8 을 설치해야 한다. Maven 때문에 반드시 JDK를 설치해야 한다. Windows 64bit 버전을 다운받아 설치한다. 그리고 JAVA_HOME, CLASS_PATH, PATH를 시스템 환경 설정을 해준다. 이 과정은 검색해보면 많이 나오니까 따로 기술하진 않겠다.

Maven 3.3.9 설치

Maven 은 Java 개발에 필요한 각종 라이브리 의존성, 빌드, 테스트를 자동화해주는 툴이다. 대부분 Java 개발이 대규모로 이루어지고 있어 이러한 것을 자동으로 처리해주는 필요가 많이 생겼는데 Maven이 그걸 자동으로 해준다.

Eclipse 에서는 Maven 과 통합이 되어서 사용자가 별도의 명령어를 치거나하는게 아니라 Eclipse 에서 전부 Maven 관련된 일을 수행할 수 있다.

설치는 아주 간단하다. Maven 홈페이지에서 다운받아서 압축해제만 해주면 끝이다. 나는 압축을 해준 다음에 C:\ 디렉토리로 그냥 옮겨줬다.

  • C:\apache-maven-3.3.9

설치를 했다면 설정을 해줘야 한다. Maven 설치한 디렉토리에 repository 라는 디렉토리를 생성한다.

maven repository 디렉토리 생성
maven repository 디렉토리 생성

conf 디렉토리에 보면 setting.xml 파일을 텍스트 에디터로 열어서 다음과 같이 localRepository 부분에 방금 생성한 repository 디렉토리를 지정해준다.

Maven 자체에 대한 설정은 아주 많은데, 보통의 경우에 여기까지만 해도 개발하면서 이용하는데 아무런 문제가 되지 않는다.

Eclipse 설치

Eclipse 설치를 위해서 홈페이지에 가보면 다양한 Eclipse를 볼수 있다. 그것들은 마치 STS 와 동일한 것들이라고 보면 된다. C/C++ 를 위한 Ecclipse, PHP를 위한 Eclipse, Java 를 위한 Eclipse 등 많은 Eclipse 통합 제품들을 제공하는데 우리는 Java EE 를 위한 Eclipse 를 다운받는다.

  • Eclipse IDE for Java EE Developers

시스템 운영체제에 맞는것을 다운받으면 된다. 다 다운받으면 압축해제해서 C:\ 로 옮겨준다. 나 같은 경우에는 다음과 같다.

  • C:\eclipse-jee-mars2

Eclipse 설정

먼저 Eclipse 를 실행한다. 모든 설정은 Eclipse 실행한 상태에서 하게 된다.

실행을 했다면 ‘Help’ 메뉴 -> Check for Updates 를 실행해서 Eclipse 를 최신상태로 업데이트를 반드시 해준다.

Spring Tools Suites Plugin 설치

Plugin 설치는 Marketplace 를 이용해서 아주 쉽게 할 수 있다. ‘Help’ 메뉴 -> Eclipse Marketplace 를 클릭하면 Marketplace가 실행된다.

Marketplace 에서 Spring 으로 검색해서 설치버튼 클릭
Marketplace 에서 Spring 으로 검색해서 설치버튼 클릭

위 화면과 같이 ‘Spring’ 으로 검색해서 나오는 ‘Spring IDE 3.7.3.RELEASE’ 에 Install 클릭해준다. 그러면 화면이 바뀌고 설치하고자하는 추가 컴포넌트들을 선택하는 화면이나오는데 잘 모르면 그냥 ‘Confirm’ 클릭하고 라이센스에 동의해주고 ‘Finish’ 클릭하면 설치가 진행된다.

중간에 인증되지 않은 Plugin 을 설치하겠냐고 물어보는 팝업창이 나오기도 하는데 ‘Yes’를 해주면 설치가 완료 된다.

Maven 설정

Eclipse 를 실행하고 ‘Window’ 메뉴 -> Preferences 를 클릭하고 나오는 창에서 ‘maven’ 으로 검색한다.

maven 설정
maven 설정

위 화면과 같이 ‘User Settings’ 부분에 앞에서 Maven 설치시에 수정했었던 settings.xml 파일을 인식 시켜준다.

한가지 더 Maven 을 위한 설정이 존재하는데 다음과 같이 Jdk 의 tools.jar 을 library 에 포함시켜줘야 한다. 만일 이것을 하지 않게되면 Maven 사용시에 다음과 같은 오류를 만나게 될 수도 있다.

이는 tools.jar 을 필요로 하는 것인데 다음과 같이 인식시켜주면 된다.

tools.jar 추가해주기
tools.jar 추가해주기

이로써 Spring 개발을 위한 설정은 모두 끝났다.

하지만, 추가적인 필요한 설정을 해주자.

Edit Encoding,  line delimiter 설정

Windows 에서 Eclipse 를 사용하게되면 Eclipse의 기본 파일 인코딩은 MS949로 시스템 기본 문자셋을 따른다. 하지만 지금 세상은 UTF-8 세상이 된지 오래다.

또, Line delimiter 라고 해서 한줄을 다 쓰고나서 Enter 를 누르면 ‘\n’, ‘\r\n’ 이 두가지 형태로 라인이 끝임을 마킹하게 되는데 이는 Windows 나 Unix 에 따라 다르다. 이는 개발한 애플리케이션이 어느 시스템에서 동작하는지에 따라 선택해준다. 나는 Unix 로 바꿔줬다.

Encoding, Line delimiter 변경
Encoding, Line delimiter 변경

Line Numbering

텍스트 화면 왼쪽에 줄번호를 보이게 하면 개발시에 아주 편리하다. 설정은 다음과 같이 한다.

Line Number 보이기
Line Number 보이기

Eclipse Color Themes 설치

개발을 하다보면 Edit에 Syntax Highlight 를 변경하고자 하는 욕구가 나온다. 이럴때에 Color Theme를 설치하고 바꿔주면 된다. 이것도 Plugin Marketplace 에서 설치가능하다.

Eclipse Color Theme 설정
Eclipse Color Theme 설정

Plugin 을 설치하고 나면 위와같이 전에 안보이던 Color Theme 가 나오고 많은 Syntax Highlight Color 들을 볼수 있고 원하는 것을 선택할 수 있게된다. (원래는 선택하면 미리보기 기능을 제공했지만 현시점(2016.05)에서는 어찌된 영문인지 ‘곧 돌아온다’라는 문구만 나온다.)

이로써 Spring 개발을 위한 Eclipse 세팅에 대해서 간단히 알아봤다.

윈도우용 JDK Portable 설치.

윈도우용 JDK를 보면 Portable 설치가 없다. 설치를 할려면 Windows Installer  를 이용하는 방법 밖에 없다. 문제는 두개의 버전, 1.7과 1.8 버전의 JDK 를 설치할 수가 없을 수도 있다. 최신판을 설치된 상태에서 구 버전을 설치할려면 이미 최신버전이 설치가 되어 있어서 설치가 안될 수도 있다.

이럴때 Linux 용 처럼 압축만 해제하면 쓸수 있도록 할 수 있지 않을까? 이 글은 JDK를 압축해제하는 것만으로 설치하는 방법인 Portable 설치에 대해서 다룬다. 또한, 이글은 다음 링크의 내용을 정리한 것이다.

참고로 JDK 1.7 버전만 가지고 테스트 됐다.

준비

구 버전의 Windows Installer 를 다운받는다. 보통은 .exe 확장자로 끝나는 파일이다. 또 다른 프로그램이 필요한데 .exe 를 압축해제할 수 있는 압축/해제 소프트웨어다. 많은 압축/해제 소프트웨어가 있지만 7-zip 을 이용했다.

압축해제

jdk 압축 해제
위 그림과 같이 7-zip 을 설치한 후 마우스 오른쪽 버튼을 클릭하면 .exe 파일을 압축해제할 수 있다.

압축을 해제하면 jdk-7u80-windows-x64 디렉토리가 생성되고 그 안에 ‘tools.zip’ 압축파일이 보인다. 그럼 이 tools.zip 도 압축을 해제한다.

pack 파일을 jar 파일로 변환하기

tools.zip 파일을 보면 pack 파일들이 보인다. windows installer 의 패키징 파일이다. 이것을 unpack 해서 jar 파일로 만들어주는게 핵심이 된다.

cmd 창에서 작업을 해야해서 cmd 창을 띄운다. 그리고 방금 압축해제한 디렉토리인 tools 로 이동한다.

cmd 창에서 tools 로 이동
cmd 창에서 tools 로 이동

그리고 다음과 같이 입력한다.

위와같이 하면 pack 파일이 전부 jar 파일로 변환된다.

이제 tools 디렉토리를 ‘JDK1.7’ 로 이름을 바꾸고 C:\ 로 이동시키면 Portable 하게 설치가 완료된다.