gpt4 book ai didi

java - 我的 eclipse 插件创建了无穷无尽的工作区构建循环,可能与工作相关

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:09 24 4
gpt4 key购买 nike

我创建了一个插件来连接到保存操作并创建一个已编辑 javascript 文件的缩小 javascript 文件。你可以在这个问题中看到完整的代码:eclipse plugin does not work after update to juno (eclipse 4)

问题是,由于 Juno,此插件会在工作区构建过程中创建无限循环。它首先开始缩小我根本没有改变的文件。该文件在构建中创建了一个无限循环。当它完成缩小文件后,它会开始一个新的工作区构建并再次缩小文件等等。但一段时间后情况会变得更糟,尤其是在新的 eclipse 开始时。突然间有十几个我从未接触过的文件被缩小了。如果我卸载我的插件,然后让 eclipse 构建工作区,重新安装我的插件它再次工作。但过了一会儿,一切又开始了。

我认为这与我处理创建文件的工作方式有关,见下文。也许朱诺在这里发生了一些变化?但我找不到任何相关信息。

Job compileJob = new Job("Compile .min.js") {
public IStatus run(IProgressMonitor monitor) {
public IStatus run(IProgressMonitor monitor) {
byte[] bytes = null;
try {
bytes = CallCompiler.compile(fullLocation.toString(), CallCompiler.SIMPLE_OPTIMIZATION).getBytes();

InputStream source = new ByteArrayInputStream(bytes);
if (!newFile.exists()) {
newFile.create(source, IResource.NONE, null);
} else {
newFile.setContents(source, IResource.NONE, null);
}
} catch (IOException e) {
e.printStackTrace();
} catch (CoreException e) {
e.printStackTrace();
}
return Status.OK_STATUS;
}
};
compileJob.setRule(newFile.getProject());
compileJob.schedule();

最佳答案

您需要将newFile 设置为derived。派生文件是在构建期间由工作区隐式创建的文件,应该在清理期间将其删除(因为它可以在下一次构建期间恢复)。

您可以在IResource 上调用setDerived 方法:

org.eclipse.core.resources.IResource.setDerived(boolean, IProgressMonitor)

或者当您创建文件时,它可以创建为派生的,尽管这样调用:

newFile.create(stream, IResource.DERIVED, monitor);

但是,您不能通过 setContents 设置 DERIVED 标志,在这种情况下您必须显式调用 setDerived(true)

来自文档:

A derived resource is a regular file or folder that is created in the course of translating, compiling, copying, or otherwise processing other files. Derived resources are not original data, and can be recreated from other resources. It is commonplace to exclude derived resources from version and configuration management because they would otherwise clutter the team repository with version of these ever-changing files as each user regenerates them.

关于java - 我的 eclipse 插件创建了无穷无尽的工作区构建循环,可能与工作相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966014/

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