"Worker-7" prio=6 tid=0x561bf400 nid=0xd28 runnable [0x593be000] java.lang.Thread.State: RUNNABLE at sun.security.provider.SHA.implCompress(Unknown Source) at sun.security.provider.DigestBase.engineUpdate(Unknown Source) at java.security.MessageDigest$Delegate.engineUpdate(Unknown Source) at java.security.MessageDigest.update(Unknown Source) at org.eclipse.jgit.dircache.DirCacheEntry.<init>(DirCacheEntry.java:168) at org.eclipse.jgit.dircache.DirCache.readFrom(DirCache.java:413) at org.eclipse.jgit.dircache.DirCache.read(DirCache.java:346) at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:196) at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:239) at org.eclipse.jgit.lib.Repository.lockDirCache(Repository.java:873) at org.eclipse.egit.core.GitMoveDeleteHook.deleteFile(GitMoveDeleteHook.java:58) at org.eclipse.team.internal.core.MoveDeleteManager.deleteFile(MoveDeleteManager.java:50) at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1930) at org.eclipse.core.internal.resources.Resource.delete(Resource.java:780) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder$3.visit(BatchImageBuilder.java:219) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:65) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:75) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.copyExtraResourcesBack(BatchImageBuilder.java:191) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.cleanOutputFolders(BatchImageBuilder.java:162) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:46) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:254) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:173) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513) at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:422) at org.eclipse.ui.actions.GlobalBuildAction$1.run(GlobalBuildAction.java:180) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
So you want the XML files to be available as Java resources at runtime, is that right?
Sounds like either your .gitignore isn't quite right or there's a bug in the egit that's causing resource copying to be treated like git copying.
.project .gitignore (created with EGit; example attached) src/ src/<package-path>/ABC.xml classes/ (output folder) classes/<package-path>/ABC.xml (derived)
... IResource copiedResource = outputFolder.getFile(partialPath); // the .xml file in the output folder if(copiedResource.exists()) { ... copiedResource.delete(IResource.FORCE, null); // here the GitMoveDeleteHook is called }
final DirCache dirc = map.getRepository().lockDirCache(); final int first = dirc.findEntry(map.getRepoRelativePath(file)); if (first < 0) { dirc.unlock(); return false; }
During the build process, after all the classes for one project are built, the index is read once (presumeably to regenerate the DirCache). This is no problem, since it's a reasonably fast operation.