Проект не был построен из-за

1

Я работаю над Android-приложением, используя Android SDK для Eclipse, а также подключаемый модуль Egit для github.
Недавно я столкнулся с ошибкой при попытке создать проект после попытки слияния с (удаленным) master. У меня есть эта ошибка, указанная в окне "Проблемы":

The project was not built due to "Error updating cache during move/delete.
The resource cannot be moved, renamed or deleted due to an internal error."

В моем журнале ошибок у меня также есть предыдущий Project > Clean:

JavaBuilder handling ImageBuilderInternalException while building: Project
org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources.
    at org.eclipse.core.internal.resources.Resource.delete(Resource.java:737)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.cleanOutputFolders(BatchImageBuilder.java:114)
    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:627)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Contains: Error updating cache during move/delete.
The resource cannot be moved, renamed or deleted due to an internal error.
java.io.IOException: Cannot lock C:\Users\Jessbro\Project\.git\index
    at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:187)
    at org.eclipse.jgit.lib.Repository.lockDirCache(Repository.java:932)
    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:1763)
    at org.eclipse.core.internal.resources.Resource.delete(Resource.java:724)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.cleanOutputFolders(BatchImageBuilder.java:114)
    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:627)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

и

JavaBuilder handling CoreException while cleaning: Project
org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources.
    at org.eclipse.core.internal.resources.Resource.delete(Resource.java:737)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.cleanOutputFolders(BatchImageBuilder.java:114)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.clean(JavaBuilder.java:291)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:218)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:360)
    at org.eclipse.core.internal.resources.Project$1.run(Project.java:523)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1782)
    at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:502)
    at org.eclipse.core.internal.resources.Project.build(Project.java:94)
    at org.eclipse.ui.internal.ide.dialogs.CleanDialog.doClean(CleanDialog.java:312)
    at org.eclipse.ui.internal.ide.dialogs.CleanDialog$1.runInWorkspace(CleanDialog.java:154)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Contains: Error updating cache during move/delete.
The resource cannot be moved, renamed or deleted due to an internal error.
java.io.IOException: Cannot lock C:\Users\Jessbro\Project\.git\index
    at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:187)
    at org.eclipse.jgit.lib.Repository.lockDirCache(Repository.java:932)
    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:1763)
    at org.eclipse.core.internal.resources.Resource.delete(Resource.java:724)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.cleanOutputFolders(BatchImageBuilder.java:114)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.clean(JavaBuilder.java:291)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:218)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:360)
    at org.eclipse.core.internal.resources.Project$1.run(Project.java:523)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1782)
    at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:502)
    at org.eclipse.core.internal.resources.Project.build(Project.java:94)
    at org.eclipse.ui.internal.ide.dialogs.CleanDialog.doClean(CleanDialog.java:312)
    at org.eclipse.ui.internal.ide.dialogs.CleanDialog$1.runInWorkspace(CleanDialog.java:154)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Я попытался найти некоторые возможные решения, но не смог найти что-нибудь полезное. Я столкнулся с этой проблемой, увидев маркер ошибки рядом с моим именем проекта, но не имел маркеров для любого из моих классов.
Сначала я искал возможные решения этой проблемы, и большинство из них объяснили, что нужно сделать Project > Clean, когда мои ошибки сборки появились в журнале.
Спасибо.

Теги:
egit

2 ответа

0
Лучший ответ

В таком случае я бы переключился на интерфейс командной строки и проверил:

  • git status в проекте
  • убедитесь, что слияние завершено (проверьте, нет ли каких-либо конфликтов слияния)
  • клонировать репо в новом каталоге
  • импортировать указанный проект в новое рабочее пространство, чтобы посмотреть, можно ли его перестроить.

Это скорее обходное решение, чем объяснение того, что на самом деле происходит для вашей проблемы, но, по крайней мере, это позволило бы двигаться дальше.

1

The resource cannot be moved, renamed or deleted due to an internal error. java.io.IOException: Cannot lock C:\Users\Jessbro\Project\.git\index

Это будет связано с наличием файла: ... \.git\index-lock - он должен иметь размер файла 0

EGit считает, что другой клиент git выполняет эксклюзивное действие. Тем не менее, я обнаружил, что когда EGit выдает исключение (из более ранней операции), он не может очистить свой собственный файл блокировки!

Чтобы решить, убедитесь, что клиенты git не обращаются к вашему локальному репозиторию git (возможно, закрывают Eclipse) и просто удаляют его.

Другие мысли:

  • Обновление EGit! Более поздние версии лучше, чем ~ 9 месяцев назад, когда вопрос был опубликован. (У меня были проблемы с "папкой ссылок Eclipse" внутри рабочего каталога git. EGit все равно может сбой из-за этого, но теперь только по конкретным действиям git, а не практически по каждому действию рефакторинга Java!)

  • В окнах несколько клиентов git могут сжимать друг друга неприятными способами, поскольку блокировка файлов Windows более "эксклюзивна", чем в Linux (по умолчанию в любом случае - при вызове "обычных" функций C/Java )

Кроме того, на самом деле более поздняя проблема настолько плоха, что я почти полностью переключился на командную строку и просто "прикрепляю" EGit (Team → Share Project) временно только для git annotate! Это также экономит много оперативной памяти. Это позор, потому что EGit кажется довольно хорошо интегрированным. По крайней мере, установка/отсоединение происходит очень быстро.

  • 0
    Удаление блокировки индекса размером 0 сделало это для меня. Спасибо Люк

Ещё вопросы

Сообщество Overcoder
Наверх
Меню