Eclipse - 无法从工作区中删除项目。NPE

4

我无法从工作区中删除该项目。Eclipse抛出了NPE错误,我不知道如何解决这个问题。

java.lang.NullPointerException 在org.eclipse.ltk.ui.refactoring.resource.DeleteResourcesWizard$DeleteResourcesRefactoringConfigurationPage.createControl(DeleteResourcesWizard.java:89)中发生。 在org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.createContents(RefactoringWizardDialog2.java:631)中创建内容。 在org.eclipse.jface.window.Window.create(Window.java:431)中创建窗口。 在org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)中创建对话框。 在org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:171)中运行操作。 在org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)中显示繁忙指示器。 在org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:192)中运行重构向导。 在org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:115)中运行重构向导。 在org.eclipse.ltk.internal.ui.refactoring.actions.DeleteResourcesHandler.execute(DeleteResourcesHandler.java:40)中执行删除资源操作。 在org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)中执行处理程序。 在org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)中执行命令。 在org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)中执行带参数的命令。 在org.eclipse.ui.internal.handlers.HandlerService.executeCommandInContext(HandlerService.java:270)中在上下文中执行命令。 在org.eclipse.ui.internal.ide.actions.LTKLauncher.runCommand(LTKLauncher.java:95)中运行命令。 在org.eclipse.ui.internal.ide.actions.LTKLauncher.openDeleteWizard(LTKLauncher.java:47)中打开删除向导。 在org.eclipse.ui.actions.DeleteResourceAction.run(DeleteResourceAction.java:481)中运行删除资源操作。 在org.eclipse.jdt.internal.ui.refactoring.reorg.DeleteAction.run(DeleteAction.java:162)中运行删除操作。 在org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:274)中分派运行。 在org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:250)中运行选择分派操作。 在org.eclipse.jface.action.Action.runWithEvent(Action.java:498)中运行操作。 在org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)中执行操作处理程序。 在org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)中执行命令。 在org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)中执行带参数的命令。 在org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)中执行命令。 在org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468)中执行命令。 在org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786)中按下按键。 在org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885)中处理键盘事件。 在org.eclipse.ui.internal.keys.OutOfOrderListener.handleEvent(OutOfOrderListener.java:76)中处理事件。 在org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)中发送事件。 在org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)中发送事件。 在org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282)中发送事件。 在org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267)中发送事件。 在org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1294)中发送键盘事件。 在org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:730)中按下键盘事件。 在org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:2841)中按下控件的键盘事件。 在org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:734)中按下复合组件的键盘事件。 在org.eclipse.swt.widgets.Tree.gtk_key_press_event(Tree.java:1977)中按下树形组件的键盘事件。 在org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1743)中处理窗口过程

以下是我的环境信息:

eclipse.buildId=M20110210-1200
java.version=1.6.0_21
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_AU
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os linux -ws gtk -arch x86 -product 
org.eclipse.epp.package.jee.product

这是关于我的环境的一些信息,其中包括我使用的软件版本和操作系统架构等。

如果你重试一下,它能正常工作吗?如果不行,关闭所有编辑器它能正常工作吗? - Kai
4个回答

4
相关Eclipse bug为345477。在该帖子中,引用了一些ia32-libs的bug。建议在执行Eclipse之前执行以下操作以解决该问题:
export GDK_PIXBUF_MODULE_FILE=/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache

我可以确认这个方法是可行的,即使使用Ubuntu-Mono-Light图标集。我在Ubuntu 11.04 64位系统上使用32位Java和32位Eclipse。


1

我注意到在Ubuntu 11.04上使用Eclipse 3.6 SR2时出现了同样的问题。但是在使用相同版本的Eclipse的Ubuntu 10.04和Windows 7上,它可以正常工作。 NullPointerException 来自于DeleteResourcesWizard第89行,因为imagenull

87    Image image= parent.getDisplay().getSystemImage(SWT.ICON_QUESTION);
88    Label imageLabel = new Label(composite, SWT.NULL);
89    imageLabel.setBackground(image.getBackground());

我发现 Ubuntu 11.04 的快速解决方法是使用不同的主题(如 Clearlooks)或图标集(如 GNOME)。对我无效的默认主题是 Ambiance,它默认使用 Ubuntu-Mono-Dark 图标集。我猜它可能缺少 SWT.ICON_QUESTION 需要的图标(或已被重命名),Eclipse 找不到它时就没有优雅地处理。

0

最接近的错误(问题302791)已在3.6中修复(我怀疑您已经使用了构建ID M20110210-1200)

您的错误似乎发生在过程的最开始,因为它无法创建`DeleteResourcesWizard。
这可能是由于以下原因:

  • 一些奇怪的选择(您是否尝试在包资源管理器中选择项目?在资源管理器中选择?)
  • 一些已被项目引用的已删除资源。

如果您能够每次都重现此问题,则可以值得新建一个Eclipse错误报告。


0

谢谢,我已经将我的图标集更改为GNOME并且它运行了!Ubuntu 11.04是有史以来最糟糕的Ubuntu!看起来Ubuntu的目标就像Windows ME和Vista一样...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接