我正在开发一个eclipse插件,但是当我使用IWorkspaceRoot获取root时,它总是返回null。你们对此有什么想法吗?先感谢您!
IWorkspaceRoot rootWorkspace = ResourcesPlugin.getWorkspace().getRoot();
答案 0 :(得分:-1)
假设:
ResourcesPlugin
为空或未创建工作区(ResourcesPlugin.getWorkspace()
)。
使用资源句柄来操纵工作区。资源句柄是指向工作空间中特定项目,文件夹或文件的轻量级指针。您可以创建资源句柄而不创建资源,并且资源可以存在,而不管是否存在指向它们的句柄。要创建资源,您首先必须创建一个资源句柄,然后告诉它创建资源。以下代码段使用资源句柄创建项目,文件夹和文件。
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IProject project = root.getProject("MyProject");
IFolder folder = project.getFolder("Folder1");
IFile file = folder.getFile("hello.txt");
//at this point, no resources have been created
if (!project.exists()) project.create(null);
if (!project.isOpen()) project.open(null);
if (!folder.exists())
folder.create(IResource.NONE, true, null);
if (!file.exists()) {
byte[] bytes = "File contents".getBytes();
InputStream source = new ByteArrayInputStream(bytes);
file.create(source, IResource.NONE, null);
}
此示例在尝试创建资源之前会进行防御性检查,以确保该资源不存在。这种防御性编程是一个好主意,因为如果您尝试创建已经存在的资源,则会引发异常。这样,该示例可以在同一工作空间中多次运行,而不会引起错误。创建方法的空参数应由实际应用程序中的进度监视器替换。