5월 09, 2022

WSL2에 Java를 설치하고 Eclipse를 통해 프로젝트 생성까지

WSL2에 Eclispe 개발환경을 구축하는 과정을 기록합니다.

이 글은 과도한 CTRL+C,V 및 잘못된 정보를 포함하고 있을 가능성이 매우 높음을 알립니다 ㅎ..


1. JAVA설치 

sudo apt update

sudo apt install openjdk-8-jdk

로 자바를 wsl에 설치해줍니다

java -version

javac --version

으로 버전을 확인해줍니다

 

2. Eclipse IDE와 WSL연동

우선, WSL의 GUI프로그램이 화면에 그래픽 창을 띄울 수 있게 하기 위해 vcxsrv를 설치합니다.

https://sourceforge.net/projects/vcxsrv/

에서 다운로드를 진행해줍니다.


다운로드 시 체크해야 할 사항은

https://hbase.tistory.com/303 를 참고하였습니다.


다음으로 WSL에게 디스플레이 정보를 알려줘야 합니다.

위의 링크를 따라했으나, 

export DISPLAY=($cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'):0

zsh: parse error near `|'

에러가 발생합니다.

https://psychoria.tistory.com/739 다른 링크를 참조하여 디스플레이 설정을 진행했습니다.


export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0”

export LIBGL_ALWAYS_INDIRECT=1

해당 명령어를 실행하고, 이를 ~/.bashrc의 최하단에 vim을 통해 입력해두고 저장해줍니다.


이후 https://www.eclipse.org/downloads/packages/ 에서 이클립스 리눅스 버전을 다운로드 합니다.


mnt 디렉토리 하에 있는 해당 파일을 cp명령어를 통해 home으로 옮기고, 

tar -xvf eclipse-jee-2022-03-R-linux-gtk-x86_64.tar.gz

로 압축을 해제합니다.


그리고 

cd eclipse

./eclipse

로 실행을 해주려는데...!

org.eclipse.m2e.logback.configuration: Activated before the state location was initialized. Retry after the state location is initialized.

SWT OS.java Error: Failed to load swt-pi3, loading swt-pi4 as fallback.

Eclipse:

An error has occurred. See the log file

에러가 발생합니다.


https://stackoverflow.com/questions/10165693/eclipse-cannot-load-swt-libraries

해당 스택오버플로우 글을 통해 에러를 해결했습니다.



저는 /usr/lib/jni 디렉토리 자체가 없어서 문제가 발생한 듯합니다.

위의 명령어에서 gtk-3 이 아니라 gtk-4로 바꿔서 명령어를 입력해줍니다.

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/

이후 해당 명령어를 실행해줍니다.


이제 ./eclipse로 실행해봅니다.


잘 실행되는 것 같죠....?

pjtTest라는 프로젝트를 만들어보았습니다.


src파일은 실제로 내가 작성한 코드들이 저장된 디렉토리이고,
bin파일은 바이너리, 즉 컴파일 한 이후 컴퓨터가 이해할 수 있는 형식으로 변환된 파일이 담긴 디렉토리 입니다.

패키지 익스플로러에서 
src파일을 우클릭한 이후, New를 클릭하여 새로운 자바 클래스를 만들어줍니다.
자바 프로그램을 구성하는 하나하나의 파일들을 클래스라고 부릅니다.
클래스를 생성했습니다.

main을 입력한 이후, 컨트롤+스페이스로 메인 메소드를 호출합니다

이 메인 메소드는 프로그램을 실행할때, 컴퓨터가 제일 처음 찾아서 실행하는 메소드입니다.
즉, 프로그램의 출발점을 지정해주는 메소드입니다.



귀엽게 Hello World 를 찍어봅니다.
System.out.println(); 은 앞서와 마찬가지로 sysout만 입력하고 컨트롤 + 스페이스 입력하면 저절로 완성됩니다.

Ctrl+S로 저장(저장할때 컴파일까지 됩니다. 
저장 이후 bin파일에 들어가보면 pjtTest안에 MainClass.class파일이 형성된 것을 볼 수 있습니다.

프로젝트를 마우스 우클릭하고, Run as java application을 통해 Hello World를 실행가능합니다.

이렇게 Hello World까지 찍어보았습니다!