我创建了一个插件来挂钩保存操作并创建经过编辑的JavaScript文件的缩小javascript文件。您可以在此问题中看到完整的代码:eclipse plugin does not work after update to juno (eclipse 4)我的eclipse插件创建了无限的工作空间构建循环,可能与作业有关
问题是,由于Juno此插件在工作空间构建过程中创建了无限循环。 它首先开始缩小我根本没有改变的文件。该文件在构建中创建了一个无限循环。当它完成文件缩小时,它会启动一个新的工作空间构建并再次缩小文件等等。 但经过一段时间后,情况会变得更糟,特别是在新的eclipse开始时。突然间,有十几个文件被我缩小,我从未碰过。 如果我卸载我的插件,然后让Eclipse建立工作区,重新安装我的插件它再次运作。但过了一段时间,这一切都开始了。
我认为这与我处理作业创建文件的方式有关,请参见下文。 Juno可能有什么改变?但是我没有找到任何有关这方面的信息。
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();
它工作正常,如果我停用“项目 - >自动生成”。手动构建项目不会产生此错误。似乎只有在工作区自动构建时才会发生。 – DarsVaeda
我猜这是你有一个嵌套run()方法声明的拼写错误。但更重要的是,newFile的位置在哪里?如果它不在输出文件夹中,则对该文件的任何更改都会触发增量构建。如果你不想让newFile触发构建,那么将其设置为派生。 –
是的,我认为这是一个错字。 NewFile位于工作区中,保存文件位于同一文件夹中。构建触发很好。但有时它会一次又一次地导致建筑物循环。你是什么意思把它设置为“派生”?我会怎么做? – DarsVaeda