gpt4 book ai didi

java - 我可以使用 Eclipse JDT 仅在内存中创建新的 'working copies' 源文件吗?

转载 作者:行者123 更新时间:2023-11-29 09:25:58 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

Here is how to create resource link in workspace

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

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

关于java - 我可以使用 Eclipse JDT 仅在内存中创建新的 'working copies' 源文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1875722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com