今天在機器上裝了個MyEclipse, 用著用著, 發現"Open In Explorer"不能用了.
找到Workspace/.metadata/.log記錄檔, 裡面記錄的錯誤如下:
!ENTRY org.eclipse.ui 4 0 2009-04-20 17:34:39.953<br />!MESSAGE Unhandled event loop exception<br />!STACK 0<br />java.lang.NoClassDefFoundError: Could not initialize class com.jniwrapper.win32.shell.Shell32<br />at com.genuitec.eclipse.desktop.util.DesktopUtil.explore(DesktopUtil.java:45)<br />at com.genuitec.eclipse.desktop.action.ExploreFileActionDelegate.basicRun(ExploreFileActionDelegate.java:40)<br />at com.genuitec.eclipse.desktop.action.ExploreFileActionDelegate.run(ExploreFileActionDelegate.java:35)<br />at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:256)<br />at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)<br />at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)<br />at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)<br />at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:443)<br />at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)<br />at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)<br />at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)<br />at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)<br />at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)<br />at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)<br />at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)<br />at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)<br />at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)<br />at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)<br />at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)<br />at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)<br />at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)<br />at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)<br />at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)<br />at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)<br />at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)<br />at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />at java.lang.reflect.Method.invoke(Method.java:597)<br />at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)<br />at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)<br />at org.eclipse.equinox.launcher.Main.run(Main.java:1173)<br />at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
上網搜了一下, 也沒有找到解決方案. 搜尋半天, 最後和jniwrap.dll聯絡起來了.
結果將windows/system32下的這個檔案刪除之後, 重啟MyEclipse, "Open In Explorer"就可以用了.
ps. jniwrap.dll好像是在安裝watij的時候放到system32下面去的.