我是否可以使用Eclipse JDT仅在内存中创建源文件的新“工作副本”?

时间:2009-12-09 18:06:09

标签: java eclipse file eclipse-jdt

我正在使用Eclipse JDT构建一个Java重构平台,用于在选择一个并保存之前在内存中探索不同的重构。我可以创建源文件的工作副本集合,在内存中编辑它们,并使用JDT框架将更改提交到磁盘。

但是,我还想在内存中生成新的“工作副本”源文件作为重构的一部分,并且只有在我提交工作副本时才创建相应的真实源文件。我已经看到了各种提示,这是可能的,例如, http://www.jarvana.com/jarvana/view/org/eclipse/jdt/doc/isv/3.3.0-v20070613/isv-3.3.0-v20070613.jar!/guide/jdt_api_manip.htm说“请注意,编译单元不需要存在于Java模型中,以便创建工作副本”。

到目前为止,我只能创建一个新的真实文件,即

ICompilationUnit newICompilationUnit = myPackage.createCompilationUnit(newName, "package piffle; public class Baz{private int i=0;}", false, null);

这不是我想要的。有谁知道如何创建一个新的'工作副本'源文件,在我提交之前它不会出现在我的文件系统中?或者任何其他机制来实现同样的目标?

2 个答案:

答案 0 :(得分:0)

这可能不是您问题的完整解决方案,但Eclipse通过EFS(可扩展文件系统层)处理资源。文件系统的实现是可插入的。因此,您可以在工作区中创建指向内存中文件系统的链接,eclipse将显示这些资源,以便您可以编辑,编译它们或执行您通常使用Eclipse中的文件执行的任何操作。除了这些文件无法在Eclipse重启后继续存在。

其他选项可能是实现您自己的文件系统,可以随意提交和回滚。但这条路线可能有点过头了。

Here is how to create resource link in workspace

Here is implementation of in-memory file system(请注意,必须从CVS检出源,并且该页面上存储库中的路径已过时 - 使用CVS浏览器查找正确的路径。)

请注意,在URI方案名称上选择了EFS实现,因此要指向内存FS,您应该使用“memory:”启动链接的目标URI。

答案 1 :(得分:0)

您可以查看此链接 http://wiki.eclipse.org/index.php/EFS#UI_Examples:_Zip_and_Memory_file_systems

在那里你会找到一个内存EFS的示例实现。