java SWT를 Linux 64bit에서 실행하는 방법
지인에게 개인 프로젝트로 만든 SWT 프로그램을 리눅스에서 돌릴 수 있도록 요청을 받았다.
단순하게 SWT.jar파일만 리눅스용을 구해서 설정하면 될지 알았는데, 그렇지 못했다.
우선 SWT가 무엇인지 정리하고, 만나게 된 오류와 해결 방법을 정리한다.
운영체제에서 사용자 인터페이스 기능과 효율적인 접근을 제공하도록 설계된 JAVA용 오픈 소스 위젯 툴킷입니다.
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에서 받은 라이브 러리 추가한다.
# 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
Eclipse에서 실행되는 jar를 만들기 위해서는 해당 프로젝트에서 마우스 오른쪽을 누르고,
Export > Java > Runnable JAR file을 선택한다.
다음과 같이 실행하면 된다.
java -jar {filename.jar}
https://mvnrepository.com/artifact/org.eclipse.swt/org.eclipse.swt.gtk.linux.x86_64/4.3