这是我的代码的代码段(在xtext中工作) (将模型保存在文件中)
generatedModel.save(null) //here generatedModel is an object of resource
然后当我尝试使用
检索有关此模型的信息时...getResource(...)
我收到以下资源未找到的错误 但当我在其间添加Thread.sleep(3000)时,它起作用了。因此,这会在资源被保存到文件之前被访问时发生。 我试图添加一个监听器来检查文件何时被保存。这是代码:
var listener = new IResourceChangeListener() {
override resourceChanged(IResourceChangeEvent event) {
if (event.type === IResourceChangeEvent.POST_CHANGE) {
delta = event.delta
}
if (delta.kind === IResourceDelta.CHANGED) {
delta.accept(
new IResourceDeltaVisitor() {
override visit(IResourceDelta innerdelta) throws CoreException {
if (innerdelta.resource.type === IResource.FILE)
println("YESYESYEYESYEYESYSY")
else if(innerdelta.resource.type === IResource.FOLDER)
println("PPPPPPPPPPPPPPPPPP")
else if (innerdelta.resource.type === IResource.PROJECT)
println("WWWWWWWWWWWWWWWWWWWW")
else
println("NONONONONO")
return false
}
}
)
}
}
}
var workspace = ResourcesPlugin.workspace
workspace.addResourceChangeListener(listener)
但这没有帮助。它正在印刷NONONO ..总是在变化。我将文件保存在同一工作区的其他文件夹中。 b(项目) - > SCR根(文件夹) - >代码(夹) - >文件...
答案 0 :(得分:0)
您的访问方法应返回true
,以便访问delta中的所有资源。
资源更改事件可以包含多个嵌套增量,您需要全部查看它们。 delta通常将工作空间置于顶级delta,项目位于下一级,然后是任何文件夹,最后是文件。