A few weeks ago I upgraded my macbook pro and since then I can no longer use WTP to launch my webapp. It fails consistently publishing (or trying to) with this error

Could not publish to the server.
org.eclipse.wst.common.componentcore.internal.flat.FlatFile cannot be cast to org.eclipse.wst.common.componentcore.internal.flat.IFlatFolder

This is a servlet+javascript project with maven. So far I have tried
- new workspace and re-import project
- new version of eclipse
- new version of tomcat
- m2e wtp incubator plugin
- all of the above at once

Any help would be appreciated if you have seen this before. Google is finding nothing based on this error

The app was working fine on an older macbook pro on osx 10.6.?. When the machine was replaced (and upgraded to osx 10.8.3) eclipse was copied from the old drive to the new and the problems started.

I have also now tried a few JDK versions (Java 7 latest and Java 6).

The full error from the eclipse log is like so

!ENTRY org.eclipse.wst.server.core 4 0 2013-06-26 09:53:16.077
!MESSAGE Could not publish to the server.
!STACK 0
java.lang.ClassCastException: org.eclipse.wst.common.componentcore.internal.flat.FlatFile cannot be cast to org.eclipse.wst.common.componentcore.internal.flat.IFlatFolder
at org.eclipse.wst.common.componentcore.internal.flat.VirtualComponentFlattenUtility.ensureParentExists(VirtualComponentFlattenUtility.java:216)
at org.eclipse.wst.common.componentcore.internal.flat.VirtualComponentFlattenUtility.addMembers(VirtualComponentFlattenUtility.java:50)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.addNonChildUsedReference(FlatVirtualComponent.java:400)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.addUsedReferences(FlatVirtualComponent.java:306)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.treeWalk(FlatVirtualComponent.java:235)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.java:188)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.java:118)
at org.eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.java:227)
at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.members(J2EEFlexProjDeployable.java:267)
at org.eclipse.wst.server.core.internal.ModulePublishInfo.fillCache(ModulePublishInfo.java:294)
at org.eclipse.wst.server.core.internal.ModulePublishInfo.getDelta(ModulePublishInfo.java:376)
at org.eclipse.wst.server.core.internal.ServerPublishInfo.getDelta(ServerPublishInfo.java:366)
at org.eclipse.wst.server.core.internal.Server.getPublishedResourceDelta(Server.java:1574)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.getPublishedResourceDelta(ServerBehaviourDelegate.java:698)
at org.eclipse.jst.server.tomcat.core.internal.TomcatServerBehaviour.getPublishedResourceDelta(TomcatServerBehaviour.java:958)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.computeDelta(ServerBehaviourDelegate.java:874)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:909)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:774)
at org.eclipse.wst.server.core.internal.Server.publishImpl(Server.java:3153)
at org.eclipse.wst.server.core.internal.Server$PublishJob.run(Server.java:345)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

More interesting notes. I find that if I re-checkout the app to a new directory it will work with the same Eclipse/WTP/etc so the problem has to be with one of the files in the project under the .settings or the .metadata. haven't found the smoking gun yet though