Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Buildship falling over on "out of sync" projects #478

Closed
lukeu opened this issue May 24, 2017 · 4 comments
Closed

Buildship falling over on "out of sync" projects #478

lukeu opened this issue May 24, 2017 · 4 comments

Comments

@lukeu
Copy link
Contributor

lukeu commented May 24, 2017

I've hit the following error dialog a number of times now:

"Could not set the project description for 'my-module' because the project description
 file (.project) is out of sync with the file system."

I think a factor is having recently git-switched branches. (Which I do externally in a command shell.) Switching branches usually adds or removes one module, so I have learned to follow these steps:

  1. ./gradlew generateSources (in command shell)
  2. Right-click the top-most project > Refresh (this tells Eclipse to refresh all projects recursively)
  3. Right-click it again > Gradle > Refresh Gradle Project

After doing this, sometimes the error mentioned above will appear in 4 or 5 projects. I'm not sure why. The .project files are not git versioned, so they shouldn't have changed. (Nothing should change them except Eclipse.)

One workaround is to close and reopen each project (getting Gradle to refresh each time to step to the next one). This gets tedious, so sometimes I instead do ./gradlew cleanEclipse to delete all the .project files, then steps 2 & 3 again, which seems to fix it up.

Is there any way to encourage Eclipse to refresh its own Project, before Gradle proceeds to twiddle it?

Versions:

  • Gradle 3.5
  • Eclipse SDK Neon.3
  • Java 8 u 92 (x86)
  • Windows 7 (x64)

Full stack trace:

Java Model Exception: Core Exception [code 274] Could not set the project description for 'my-module' because the project description file (.project) is out of sync with the file system.
at org.eclipse.jdt.internal.core.ProjectReferenceChange.updateProjectReferencesIfNecessary(ProjectReferenceChange.java:114)
at org.eclipse.jdt.internal.core.ChangeClasspathOperation.classpathChanged(ChangeClasspathOperation.java:59)
at org.eclipse.jdt.internal.core.SetContainerOperation.executeOperation(SetContainerOperation.java:110)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:795)
at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:5591)
at org.eclipse.buildship.core.workspace.internal.GradleClasspathContainerUpdater.setClasspathContainer(GradleClasspathContainerUpdater.java:179)
at org.eclipse.buildship.core.workspace.internal.GradleClasspathContainerUpdater.updateClasspathContainer(GradleClasspathContainerUpdater.java:77)
at org.eclipse.buildship.core.workspace.internal.GradleClasspathContainerUpdater.updateFromModel(GradleClasspathContainerUpdater.java:154)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeJavaProjectInTransaction(SynchronizeGradleBuildOperation.java:237)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$200(SynchronizeGradleBuildOperation.java:99)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$4.run(SynchronizeGradleBuildOperation.java:222)
at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5521)
at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5478)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeJavaProject(SynchronizeGradleBuildOperation.java:218)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeOpenWorkspaceProject(SynchronizeGradleBuildOperation.java:209)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeWorkspaceProject(SynchronizeGradleBuildOperation.java:182)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:172)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:99)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:134)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2262)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeProjectsWithWorkspace(SynchronizeGradleBuildOperation.java:131)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:115)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:81)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:72)
at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73)
at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:62)
at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Caused by: org.eclipse.core.internal.resources.ResourceException: Could not set the project description for 'my-module' because the project description file (.project) is out of sync with the file system.
at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1246)
at org.eclipse.jdt.internal.core.ProjectReferenceChange$1.run(ProjectReferenceChange.java:108)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.internal.core.ProjectReferenceChange.updateProjectReferencesIfNecessary(ProjectReferenceChange.java:111)
at org.eclipse.jdt.internal.core.ChangeClasspathOperation.classpathChanged(ChangeClasspathOperation.java:59)
at org.eclipse.jdt.internal.core.SetContainerOperation.executeOperation(SetContainerOperation.java:110)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:795)
at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:5591)
at org.eclipse.buildship.core.workspace.internal.GradleClasspathContainerUpdater.setClasspathContainer(GradleClasspathContainerUpdater.java:179)
at org.eclipse.buildship.core.workspace.internal.GradleClasspathContainerUpdater.updateClasspathContainer(GradleClasspathContainerUpdater.java:77)
at org.eclipse.buildship.core.workspace.internal.GradleClasspathContainerUpdater.updateFromModel(GradleClasspathContainerUpdater.java:154)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeJavaProjectInTransaction(SynchronizeGradleBuildOperation.java:237)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$200(SynchronizeGradleBuildOperation.java:99)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$4.run(SynchronizeGradleBuildOperation.java:222)
at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5521)
at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5478)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeJavaProject(SynchronizeGradleBuildOperation.java:218)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeOpenWorkspaceProject(SynchronizeGradleBuildOperation.java:209)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeWorkspaceProject(SynchronizeGradleBuildOperation.java:182)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:172)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:99)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:134)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2262)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeProjectsWithWorkspace(SynchronizeGradleBuildOperation.java:131)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:115)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:81)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:72)
at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73)
at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:62)
at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
@oehme
Copy link
Member

oehme commented Jun 6, 2017

  1. ./gradlew generateSources (in command shell)
  2. Right-click the top-most project > Refresh (this tells Eclipse to refresh all projects recursively)
  3. Right-click it again > Gradle > Refresh Gradle Project

Step 2 is unnecessary, Buildship already does a full refresh as part of synchronization.

Is there a chance you could provide a reproducible example project?

@lukeu
Copy link
Contributor Author

lukeu commented Jun 12, 2017

I will try, however in the coming few weeks in particular I may have trouble finding spare time (between end-of-school year events, some travel, and of course work commitments).

@donat
Copy link
Contributor

donat commented Aug 15, 2017

Due to inactivity, I'm going to close this issue. Feel free to reopen it if there's an update.

@Chewbizz
Copy link

I also have this issue which seems to appear on subprojects of my multi-module projects.
My setup is quite complex, so it's not easy to make a reproductible test case: I have a custom gradle "eclipse" task that adds buildship nature to my .project files and creates the .settings/org.eclipse.buildship.core.prefs to set the required connection.project.dir property.

Closing/re-openning the projects is a workaround as said in the OP.
Another (quicker) workaround is to open and edit (touch) .project files.

The stack trace is:
java.lang.Exception: Could not set the project description for 'a-sub-project-of-the-project-which-i-refresh' because the project description file (.project) is out of sync with the file system.
at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:39)
at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:35)
at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1259)
at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1293)
at org.eclipse.buildship.core.workspace.internal.ProjectNatureUpdater.update(ProjectNatureUpdater.java:52)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeOpenWorkspaceProject(SynchronizeGradleBuildOperation.java:217)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeWorkspaceProject(SynchronizeGradleBuildOperation.java:186)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:176)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:99)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:134)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2289)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2311)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeProjectsWithWorkspace(SynchronizeGradleBuildOperation.java:131)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:115)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:85)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:73)
at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73)
at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:62)
at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants