有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java组织。日食果心内部的资源。ResourceException:为什么无法访问以编程方式创建的IResource

我正在开发一个Eclipse插件,它可以设置一个通用的裸Eclipse项目,创建一个文件夹结构并将文件移动到其中

我用类似这样的东西创建我的IProject文件夹树(IPath,如“/it/plugin/sample/template”)

private void createFolderStructure(IProject workspaceProject, IPath brokerSchemaPath) throws CoreException {
    if (workspaceProject == null) { throw new IllegalStateException("The workspace project where the broker schema has to be created cannot be null."); }

    IFolder bsFolder = workspaceProject.getFolder(brokerSchemaPath);

    if (!bsFolder.getParent().exists()) {
        createFolderStructure(workspaceProject, bsFolder.getParent().getProjectRelativePath());
    }

    if (!bsFolder.exists()) { bsFolder.create(false, true, progressMonitor); }
}

这很好:文件系统和项目似乎反映了创建的IPath([project root]/it/plugin/sample/template),但当我尝试将IResource移动到新叶文件夹(“../template”)时,它会引发类似的问题:

Caused by: org.eclipse.core.internal.resources.ResourceException: Resource '/it' does not exist. at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:341) at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:215) at org.eclipse.core.internal.resources.Project.checkAccessible(Project.java:147) at org.eclipse.core.internal.resources.Resource.checkMoveRequirements(Resource.java:408) at org.eclipse.core.internal.resources.Resource.assertMoveRequirements(Resource.java:206) at org.eclipse.core.internal.resources.Resource.move(Resource.java:1618) at org.eclipse.core.internal.resources.Resource.move(Resource.java:1598)

要移动资源,我使用这个简单的存根

private void moveResource(IProject workspaceProject, String resourceName,
        String from, String to) throws CoreException {

    IFile resource = workspaceProject.getFile(from+"/"+resourceName);
    if (!resource.exists()) { return; }

    resource.move(new Path(to+"/"+resourceName), false, progressMonitor);
}

怎么了?或者我错过了什么

我还尝试使用moveResource方法就地重命名资源,效果很好

非常感谢


共 (0) 个答案