Eclipse:保存后获取资源集
Eclipse: Getting a resource set after saving
这是我的代码的一段代码(在 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.. 总是在变化时。我将文件保存在同一作品的其他文件夹中 space。 b(项目)-> scr-gen(文件夹)->代码(文件夹)-> 文件...
您的访问方法应该return true
以便访问增量中的所有资源。
资源更改事件可以包含多个嵌套增量,您需要查看它们。 delta 通常在顶层 delta 有工作区,在下一层有项目,然后是任何文件夹,最后是文件。
这是我的代码的一段代码(在 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.. 总是在变化时。我将文件保存在同一作品的其他文件夹中 space。 b(项目)-> scr-gen(文件夹)->代码(文件夹)-> 文件...
您的访问方法应该return true
以便访问增量中的所有资源。
资源更改事件可以包含多个嵌套增量,您需要查看它们。 delta 通常在顶层 delta 有工作区,在下一层有项目,然后是任何文件夹,最后是文件。