我无法使用Eclipse在托管模式(Debug as - > web应用程序)中启动我的GWT应用程序。它抛出了标题中提到的异常。 Eclipse调试向我展示了以下代码:
/*
* 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;
}
}
抛出的异常是e1。我没有对应用程序进行任何更改,只是创建它并启动了调试。
我错过了什么?我正在使用Ubuntu 9.04 64位(不知道这是否重要)
编辑:堆栈跟踪
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.
答案 0 :(得分:5)
解决了这个问题。在更仔细地阅读堆栈跟踪之后(感谢Warren!),我最终搜索了不同的术语,并确定原因确实是字宽问题。
解决方案是安装32位JVM并告诉Eclipse使用它而不是64位JVM。这是通过安装新的JVM完成的,转到Window>偏好> Java>在Eclipse中安装JRE并添加新的JVM(记得指向jre dir)。然后我将其设置为默认值,并设法运行示例。
答案 1 :(得分:1)
包括堆栈跟踪,至少有几行,可以真正帮助这些,因为它通常意味着您的系统缺少某种形式的系统库。我认为变量'newname'实际上会列出缺少的库,如果你正在使用调试器。
我也运行Ubuntu 9.04,虽然不是64位,当我遇到UnsatisfiedLink错误时,这是由于libstdc ++版本错误造成的。这为我解决了这个问题:
sudo apt-get install libstdc++5