Einen derartigen Show-Stopper Bug habe ich bei Eclipse selten erlebt: Mit der aktuellen WTP 2.0.2 ließen sich Webapplikationen wegen einer NullPointerException generell nicht mehr deployen. Zudem gab es auch Probleme beim Starten von Glassfish. Wie sich herausstellte ein seit Februar 2008 bekannter Bug, der es jedoch ganz knapp nicht in die Version WTP 2.0.2 geschafft hatte. WTP 2.0.2 ist auch noch im Juni 2008 aktuell und wird z.B. bei einer Aktualisierung installiert. Ob noch eine Version 2.0.3 kommt ist fraglich; im Bugreport ist Version 3.0 anvisiert. Der Bug scheint relativ Server-übergreifend zu sein; jedenfalls ist im Bugreport auch die Rede von Glassfish, JBoss 4.2, Jetty 6 und OC4J.

Es gibt seit längerem auch schon einen Fix den man sich allerdings manuell als Patches herunterladen muss. Warum man nicht gleich eine neue Version gemacht hat, die nach der Installation einfach funktioniert, kann ich nicht nachvollziehen. Das hätte einigen Leuten Zeit gespart, wie man auch in Kommentaren des Bugreports sieht: “Trying to learn JBoss with Eclipse, I lost almost 2 days”. Wenn man den Bug kennt und von den Patches weiß, ist es aber ganz einfach. Bei Software Updates die “Web Tools Platform (WTP) Updates” auswählen und dann die Patches (WST und JST!) selektieren:
Eclipse WTP Patches

Nach einem Eclipse Neustart hatte ich dann keine Probleme mehr – mal sehen wie sich das auf Dauer verhält. Netbeans 6.1, das ich mir dann gleich installiert hatte als ich nicht mehr deployen konnte, steht jedenfalls schon bereit. ;) Die Glassfish Integration war hier jedenfalls problemlos und machte auf den ersten Blick einen sehr guten Eindruck.

Hat man die Webapplikation in einem EAR deployt, ging es übrigens auch schon ohne Patch.

Hier schließlich noch die verursachende Exception aus dem Eclipse Logfile:

!MESSAGE Could not publish to the server.
!STACK 0
java.lang.NullPointerException
at org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities.getDeployUriOfComponent(ComponentUtilities.java:327)
at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.getURI(J2EEFlexProjDeployable.java:429)
at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.guessModuleName(AntPublisher.java:259)
at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.getPublishProperties(AntPublisher.java:224)
at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.publish(AntPublisher.java:110)
at org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour.publishModule(GenericServerBehaviour.java:84)
at com.sun.enterprise.jst.server.sunappsrv.SunAppServerBehaviour.publishModule(SunAppServerBehaviour.java:106)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publishModule(ServerBehaviourDelegate.java:749)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publishModules(ServerBehaviourDelegate.java:835)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:669)
at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Hinterlasse einen Kommentar