【发布时间】:2011-01-18 18:01:55
【问题描述】:
我创建了一个向导,完成后会在项目资源管理器中添加两个文件。 其中一个应该被隐藏,但是当我在我的向导中按下完成按钮时,Eclipse 不会自动刷新视图并且它会继续显示文件。当我按 F5 时它只是隐藏它。 有没有办法在我完成向导后强制它刷新项目资源管理器?
【问题讨论】:
标签: java eclipse eclipse-plugin swt
我创建了一个向导,完成后会在项目资源管理器中添加两个文件。 其中一个应该被隐藏,但是当我在我的向导中按下完成按钮时,Eclipse 不会自动刷新视图并且它会继续显示文件。当我按 F5 时它只是隐藏它。 有没有办法在我完成向导后强制它刷新项目资源管理器?
【问题讨论】:
标签: java eclipse eclipse-plugin swt
另一个选项在eclipse中
转到 Windows-->Preferences-->General-->Workspace--> 并选中 Refresh Automatically ("refresh using native hooks or polling ")
如果开启此选项,那么工作区资源将自动与文件系统中的相应资源同步。
注意:这可能是一个冗长的操作,具体取决于您工作区中的资源数量。
http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.user/reference/ref-9.htm
【讨论】:
听起来您没有使用 Eclipse 资源 API 来更改文件系统。你有两个选择:
在处理 Eclipse 项目的内容时,最好的选择是使用 Eclipse 资源 API 而不是 java.io。请参阅 org.eclipse.resources 插件。从 ResourcesPlugin.getWorkspace().getRoot().getProject( "name" ) 开始。使用 IProject、IFile 和 IFolder API。
或者,特别是如果您的向导正在调用不支持 Eclipse 的代码,您需要在确定所有基于 java.io 的文件系统操作都已完成后调用刷新。使用 refreshLocal() 方法,该方法可用于 IProject、IFile 和 IFolder 类。例如,以下 sn -p 刷新给定项目的所有内容。这通常是多余的,因此您需要在调用刷新之前尽可能缩小范围。
ResourcesPlugin.getWorkspace().getRoot().getProject( "proj" ).refreshLocal( IResource.DEPTH_INFINITE, new NullProgressMonitor() );
【讨论】:
另一种选择是使用“外部工具”来调用您的工具,并在“刷新”和“构建”选项卡中检查选项以刷新和编译目标项目。
运行 -> 外部工具 -> 外部工具配置
【讨论】: