Think Different

[Android SDK] Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM 본문

OS/Android

[Android SDK] Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM

TENNESSEE 2014. 12. 5. 17:32

안드로이드 SDK(standard development kit)을 실행하다가 아래와 같은 오류가 발생하였을 때 대처하는 방법에 대해 정리한다.



오류내용

Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
	at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
	at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
	at org.eclipse.swt.internal.C.(Unknown Source)
	at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
	at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
	at org.eclipse.swt.widgets.Display.(Unknown Source)
	at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:402)
	at com.android.sdkmanager.Main.doAction(Main.java:390)
	at com.android.sdkmanager.Main.run(Main.java:150)
	at com.android.sdkmanager.Main.main(Main.java:116)



문제

클래스패스(classpath)에 위치한 SWT(standard widget toolkit)파일인 swt.jar가 64bit JVM(java virtual machine)에서 구동이 안되어 나타나는 오류



방법

  1. 안드로이드 SDK가 구동될 때 필요한 SWT파일은 안드로이드 SDK 디렉토리 내부에 32bit와 64bit에 맞는 swt.jar파일이 있음
  2. 클래스패스에 위치한 기존 swt.jar 파일을 제거
  3. 안드로이드 SDK 디렉토리 내부에 위치한 SWT파일 중에서 운영체제에 맞는 파일을 클래스패스로 복사


예제

# 기존 swt.jar 파일 제거
[Terminal]$ rm {CLASSPATH}/swt.jar
# 운영체제에 맞는 swt.jar 파일을 클래스패스로 복사
[Terminal]$ sudo cp {ANDROID_SDK_HOME}/tools/lib/{x86|x86_64}/swt.jar {CLASSPATH}