javax.servlet.ServletException:org.glassfish.jersey.server.ContainerException:java.lang.NoClassDefFoundError:org / xml / sax / helpers / DefaultHandler

时间:2016-06-12 07:25:22

标签: java json jersey glassfish jax-rs

我试图从基本的JAX-RS设置获取JSON输出时出现停止显示错误。我正在尝试Netbeans的Web服务向导,它已经生成了这个默认的“服务”代码:

com.aa.c

当我在package service; import entities.Manufacturer; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Stateless @Path("entities.manufacturer") public class ManufacturerFacadeREST extends AbstractFacade<Manufacturer> { @PersistenceContext(unitName = "RestDemoPU") private EntityManager em; public ManufacturerFacadeREST() { super(Manufacturer.class); } @POST @Override @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void create(Manufacturer entity) { super.create(entity); } @PUT @Path("{id}") @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void edit(@PathParam("id") Integer id, Manufacturer entity) { super.edit(entity); } @DELETE @Path("{id}") public void remove(@PathParam("id") Integer id) { super.remove(super.find(id)); } @GET @Path("{id}") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Manufacturer find(@PathParam("id") Integer id) { return super.find(id); } @GET @Override @Produces({MediaType.APPLICATION_JSON}) public List<Manufacturer> findAll() { return super.findAll(); } @GET @Path("{from}/{to}") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public List<Manufacturer> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) { return super.findRange(new int[]{from, to}); } @GET @Path("count") @Produces(MediaType.TEXT_PLAIN) public String countREST() { return String.valueOf(super.count()); } @Override protected EntityManager getEntityManager() { return em; } } 方法中移除@Produces的{​​{1}}注释以离开MediaType.APPLICATION_XML时,错误显示出来(我只想要JSON输出)。

XML很好 - 仅JSON的注释引发了findAll(),带有Java异常:MediaType.APPLICATION_JSON错误。

使用GlassFish 4.1.1。服务器日志是:

HTTP Status 500 - Internal Server Error

4 个答案:

答案 0 :(得分:1)

从4.1.1降级为Glassfish 4.1解决了这个问题。

答案 1 :(得分:1)

这是GlassFish https://java.net/jira/browse/GLASSFISH-21440中的已知错误,该错误实际上在EclipseLink中,并且上面的GlassFish错误报告中描述了一种解决方法。

您可以尝试升级到修复此错误的Payara Server。

答案 2 :(得分:0)

检查您的JDK版本,使用JDK 1.7可能没问题。

答案 3 :(得分:0)

问题是glashfish 4.1.1中缺少jar文件(jackson-module-jaxb-annotations)。您可以从此链接http://www.java2s.com/Code/Jar/j/Downloadjacksonmodulejaxbannotations212jar.htm或google下载jackson模块jaxb注释下载它。 然后将其包含在C:\ Program Files \ glassfish-4.1.1 \ glassfish \ modules中。您可以通过删除版本号来重命名jar文件。重新启动glassfish并重新部署您的应用。这样对我有用