2

我正在使用 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);

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

4

2 回答 2

0

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

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

这是在工作区中创建资源链接的方法

这是内存文件系统的实现(请注意,必须从 CVS 签出源代码,并且该页面上存储库中的路径已过时 - 使用 CVS 浏览器查找正确的路径)。

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

于 2009-12-12T16:51:20.640 回答
0

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

在那里,您将找到内存中 EFS 的示例实现。

于 2010-06-16T07:30:47.023 回答