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) 个答案