JAVA SWT를 Linux에서 실행

지인에게 개인 프로젝트로 만든 SWT 프로그램을 리눅스에서 돌릴 수 있도록 요청을 받았다.
단순하게 SWT.jar파일만 리눅스용을 구해서 설정하면 될지 알았는데, 그렇지 못했다.

우선 SWT가 무엇인지 정리 하고, 만나게된 오류와 해결 방법을 정리 한다.

SWT 란?

운영체제에서 사용자 인터페이스 기능과 효율적인 접근을 제공하도록 설계된 JAVA용 오픈 소스 위젯 툴킷입니다.

Linux 에서 실행 해보기

windows 에서 돌아가는 SWT를 가지고 실행 하면 오류가 납니다.

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
	no swt-win32-4430 in java.library.path
	no swt-win32 in java.library.path
	Can't load library: /home/lahuman/.swt/lib/linux/x86_64/libswt-win32-4430.so
	Can't load library: /home/lahuman/.swt/lib/linux/x86_64/libswt-win32.so

Linux 용 jar 파일이 몇개가 있는데, 그중에 다음을 받으면 된다.

프로젝트 설정

Eclipse 를 사용 중이면 프로젝트에서 

Properties > Java Build Path > add JARs.. 에 maven 에서 받은 라이브 러리 추가 한다.

라이브러리 추가

Linux에서 필요한 library 및 설정

# swt 관련 라이브러리 검색
$> aptitude search libswt-gtk
# 검색된 라이브러리를 설치 3, 4 모두 설치 함
$>  sudo apt-get install libswt-gtk-3-java libswt-gtk-3-jni libswt-gtk-3-java-gcj  libswt-gtk-4-java libswt-gtk-4-jni
# 사용자 계정 밑에 링크를 추가 
$> ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/
# disabled되었다는 메시지 출력시 아래 명령 실행
$> sudo execstack -c ~/.swt/lib/linux/x86_64/libswt-gtk-{VERSION}.so 

실행용 jar 파일 만들기

Eclipse 에서 실행 되는 jar 를 만들기 위해서는 해당 프로젝트에서 마우스 오른쪽을 누르고, 

Export > Java > Runnable JAR file 을 선택 한다.

Runnable Jar

실행

다음과 같이 실행 하면 된다.

java -jar {filename.jar}

세상엔 공짜는 없다.

참고 자료

https://mvnrepository.com/artifact/org.eclipse.swt/org.eclipse.swt.gtk.linux.x86_64/4.3

http://stackoverflow.com/questions/10970754/cant-open-eclipse-in-ubuntu-12-04-java-lang-unsatisfiedlinkerror-could-not-l

https://www.eclipse.org/swt/



Posted by lahuman