2009-08-29 3 views
0

Eclipse를 사용하여 호스트 모드 (Debug as -> 웹 응용 프로그램)에서 내 GWT 응용 프로그램을 시작할 수 없습니다. 그것은 제목에 언급 된 예외를 던졌습니다. 이클립스 디버그는 다음 코드를 보여줍니다 :GWT의 호스트 모드 시작시 UnsatisfiedLinkError

/* 
* GOOGLE: Since we're bundling our own version of SWT, we need to be 
* able to tell SWT where its dynamic libraries live. Otherwise we'd 
* have to force our users to always specify a -Djava.library.path 
* on the command line. 
*/ 
String swtLibraryPath = System.getProperty ("swt.library.path"); 
try { 
    String newName = name + "-" + platform + "-" + version; //$NON-NLS-1$ //$NON-NLS-2$ 
    if (swtLibraryPath != null) 
     System.load(swtLibraryPath + System.mapLibraryName(newName)); 
    else 
     System.loadLibrary (newName); 
    return; 
} catch (UnsatisfiedLinkError e1) {  
    try { 
     String newName = name + "-" + platform; //$NON-NLS-1$ 
     if (swtLibraryPath != null) 
      System.load(swtLibraryPath + System.mapLibraryName(newName)); 
     else 
      System.loadLibrary (newName); 
     return; 
    } catch (UnsatisfiedLinkError e2) { 
     throw e1; 
    } 
} 

throw되는 예외는 e1입니다. 응용 프로그램을 변경하지 않고 방금 작성한 후 디버그를 시작했습니다.

무엇이 누락 되었습니까? 정말이 사람과 도움이 될 수 있습니다, 그것은 적어도 몇 줄, 스택 트레이스를 포함 스택 추적

 Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/rafael/.eclipse/640022211/plugins/com.google.gwt.eclipse.sdkbundle.linux_1.7.0.v200907291526/gwt-linux-1.7.0/libswt-pi-gtk-3235.so: /home/rafael/.eclipse/640022211/plugins/com.google.gwt.eclipse.sdkbundle.linux_1.7.0.v200907291526/gwt-linux-1.7.0/libswt-pi-gtk-3235.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767) 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1663) 
     at java.lang.Runtime.load0(Runtime.java:787) 
     at java.lang.System.load(System.java:1022) 
     at org.eclipse.swt.internal.Library.loadLibrary(Library.java:132) 
     at org.eclipse.swt.internal.gtk.OS.(OS.java:22) 
     at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63) 
     at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54) 
     at org.eclipse.swt.widgets.Display.(Display.java:126) 
     at com.google.gwt.dev.SwtHostedModeBase.(SwtHostedModeBase.java:82) 
    Could not find the main class: com.google.gwt.dev.HostedMode. Program will exit.

답변

5

문제가 해결되었습니다. 스택 추적을 더 조심스럽게 읽은 후 (Warren 덕분에!), 나는 다른 용어로 인터넷 검색을 끝내고 실제로 word width 문제가되는 원인을 결정했습니다.

해결책은 32 비트 JVM을 설치하고 Eclipse가 64 비트 JVM 대신 사용하도록 지시하는 것입니다. 이것은 새 JVM을 설치하고, Eclipse> Preferences> Java> Installed JREs로 이동하여 새 JVM을 추가하여 수행됩니다 (jre dir을 가리 키도록하십시오). 그런 다음이를 기본값으로 설정하고 예제를 실행했습니다.

1

: 나는

EDIT (이 중요한 경우 모르는) 우분투 9.04 64 비트를 사용하고 있습니다 일반적으로 시스템에 어떤 형식의 시스템 라이브러리가 없다는 의미입니다. 나는 변수 'newname'이 실제로는 누락 된 라이브러리를 나열 할 것이라고 생각합니다. 디버거를 살펴 보겠습니다.

나는 또한 우분투 9.04를 실행하지만 64 비트는 아니지만 UnsatisfiedLink 오류가 발생했을 때 libstdC++의 잘못된 버전이 원인이었습니다. 이 문제가 해결되었습니다.

+0

스택 추적을 포함하도록 원래 질문을 수정했습니다. libstdC++ 5를 설치하려고 시도했지만 아무런 변화가 없었습니다 ... 도움을 주셔서 감사합니다! –