GoogleCloudPlatform / google-cloud-eclipse

Google Cloud Platform plugin for Eclipse
Apache License 2.0
86 stars 49 forks source link

NullPointerException while adding Dynamic Web Module facet #1098

Open elharo opened 7 years ago

elharo commented 7 years ago
  1. Create a GPE project in an Eclipse instance with GPE installed.
  2. Quit Eclipse
  3. Open different instance of Eclipse with CT4E installed.
  4. In the Properties/Project Facets add Dynamic Web Module 2.5, Java 1.7, and App Engine Java Standard Environment 1
  5. Click Apply
  6. See error log for stack trace
java.lang.NullPointerException
    at org.eclipse.jst.jee.model.internal.WebAnnotationReader.analyzeCompilationUnit(WebAnnotationReader.java:144)
    at org.eclipse.jst.jee.model.internal.WebAnnotationReader.loadModel(WebAnnotationReader.java:99)
    at org.eclipse.jst.jee.model.internal.common.AbstractAnnotationModelProvider.getConcreteModel(AbstractAnnotationModelProvider.java:111)
    at org.eclipse.jst.jee.model.internal.common.AbstractAnnotationModelProvider.getModelObject(AbstractAnnotationModelProvider.java:127)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.loadProviders(AbstractMergedModelProvider.java:265)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.access$2(AbstractMergedModelProvider.java:255)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider$LoadModelsWorkspaceRunnable.run(AbstractMergedModelProvider.java:278)
    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.jst.jee.model.internal.common.AbstractMergedModelProvider.loadModel(AbstractMergedModelProvider.java:249)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.getMergedModel(AbstractMergedModelProvider.java:219)
    at org.eclipse.jst.jee.model.internal.Web25MergedModelProvider.modify(Web25MergedModelProvider.java:80)
    at org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDelegate.populateDefaultContent(WebFacetInstallDelegate.java:311)
    at org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDelegate.createWeb25DeploymentDescriptor(WebFacetInstallDelegate.java:274)
    at org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDelegate.execute(WebFacetInstallDelegate.java:128)
    at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1477)
    at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:441)
    at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChangesInternal(FacetedProject.java:1181)
    at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:1117)
    at org.eclipse.wst.common.project.facet.core.internal.FacetedProject$5.run(FacetedProject.java:1099)
    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.wst.common.project.facet.core.internal.FacetedProject.mergeChanges(FacetedProject.java:1109)
    at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020)
    at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$4.run(FacetsPropertyPage.java:232)
    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.wst.common.project.facet.ui.internal.FacetsPropertyPage$5.run(FacetsPropertyPage.java:246)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
elharo commented 7 years ago

This problem is not unique to us:

https://www.google.com/search?q=WebAnnotationReader&oq=WebAnnotationReader&aqs=chrome..69i57.452j0j7&sourceid=chrome&ie=UTF-8

elharo commented 7 years ago

FYI this is the line that throws:

    if(Float.parseFloat(facetedProject.getProjectFacetVersion(WebFacetUtils.WEB_FACET).getVersionString()) > 2.5){

I am reasonably certain that facetedProject is not null (that's checked in the superclass constructor) so likely facetedProject.getProjectFacetVersion is returning null here, for whatever reason. Not sure if this is our bug or Eclipse's or both.

chanseokoh commented 7 years ago

I have seen this many times. The error has nothing to do with GPE, and it does seem like a bug in WTP.

Steps to reproduce:

  1. Quit Eclipse if there is one running, and start a new Eclipse instance.
  2. Create a new Hello-world project.
  3. Open the project preferences dialog > Project Facets.
  4. Uncheck App Engine Standard Environment and Dynamic Web Module. Click Apply.
  5. Check Dynamic Web Module. Click Apply.
elharo commented 7 years ago

Filed Eclipse bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=510682

We may want to send them a patch for this.