title: GlassFish 4.0 / Jersey 2.0 - NoClassDefFoundError for JsonStructureBodyReader
body: <p>I'm using GlassFish 4.0 R89 on my dev system, working with JAX-RS. Simple calls work, so I can get a serialized object, represented in XML. I had to install that on the machine of a guy who will also be involved in the coding process, and I also tried that on my notebook - and I'm getting the same result - a NoClassDefFoundError is thrown for the class JsonStructureBodyReader (although I'm not even using JSON, tried that, the server definitely returns XML with correct headers for the content-type).</p>
  
  <p>I thought I might have imported a project incorrectly, but after a comparison of the files in the working and the non-working version, I realized that there doesn't seem to be a difference that could be responsible for that (the projects are more or less equal on both machines).</p>
  
  <p>I thought maybe there's a problem with the GF version, so I checked that, but both installations are R89. However: The jars in the GFs modules/ directory seem to be different, especially when doing a binary comparison. </p>
  
  <p>Has anyone experienced that problem before?</p>
  
  <p>Here's the full stacktrace:</p>
  
  <pre><code>Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/glassfish/json/jaxrs/JsonStructureBodyReader
  at org.glassfish.jersey.jsonp.JsonProcessingFeature.configure(JsonProcessingFeature.java:69)
  at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:617)
  at org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:558)
  at org.glassfish.jersey.client.ClientConfig$State.initRuntime(ClientConfig.java:361)
  at org.glassfish.jersey.client.ClientConfig$State.access$000(ClientConfig.java:84)
  at org.glassfish.jersey.client.ClientConfig$State$3.get(ClientConfig.java:116)
  at org.glassfish.jersey.client.ClientConfig$State$3.get(ClientConfig.java:113)
  at org.glassfish.jersey.internal.util.collection.Values$LazyValue.get(Values.java:275)
  at org.glassfish.jersey.client.ClientConfig.getRuntime(ClientConfig.java:667)
  at org.glassfish.jersey.client.ClientRequest.getClientRuntime(ClientRequest.java:169)
  at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:644)
  at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:375)
  at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:275)
  at my.application.client.webservice.data.IssueClient.getIssues(IssueClient.java:50)
  at my.application.client.webservice.data.IssueClient.getIssues(IssueClient.java:30)
  at my.application.client.modules.issuetracker.IssueTracker.getTableData(IssueTracker.java:182)
  at my.application.client.modules.issuetracker.IssueTracker.drawComponents(IssueTracker.java:80)
  at my.application.client.modules.issuetracker.IssueTracker.&lt;init&gt;(IssueTracker.java:59)
  at my.application.client.actions.ShowIssueTrackerAction.fire(ShowIssueTrackerAction.java:37)
  at my.application.client.gui.PVAppMenu$2.actionPerformed(PVAppMenu.java:49)
  at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
  at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
  at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
  at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
  at javax.swing.AbstractButton.doClick(Unknown Source)
  at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
  at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
  at java.awt.Component.processMouseEvent(Unknown Source)
  at javax.swing.JComponent.processMouseEvent(Unknown Source)
  at java.awt.Component.processEvent(Unknown Source)
  at java.awt.Container.processEvent(Unknown Source)
  at java.awt.Component.dispatchEventImpl(Unknown Source)
  at java.awt.Container.dispatchEventImpl(Unknown Source)
  at java.awt.Component.dispatchEvent(Unknown Source)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
  at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
  at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
  at java.awt.Container.dispatchEventImpl(Unknown Source)
  at java.awt.Window.dispatchEventImpl(Unknown Source)
  at java.awt.Component.dispatchEvent(Unknown Source)
  at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
  at java.awt.EventQueue.access$200(Unknown Source)
  at java.awt.EventQueue$3.run(Unknown Source)
  at java.awt.EventQueue$3.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
  at java.awt.EventQueue$4.run(Unknown Source)
  at java.awt.EventQueue$4.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
  at java.awt.EventQueue.dispatchEvent(Unknown Source)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
  at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  at java.awt.EventDispatchThread.run(Unknown Source)
  </code></pre>