Problema ao criar entity manager, abstract method error

Estou tentando usar o hibernate 5 no meu projeto rest, eu uso o tomcat 7, jersey e Java EE. Eu uso o JPA 2.1 Quando eu dou o deploy e executo pela primeira vez eu obtenho a seguinte Stack Trace:

java.lang.AbstractMethodError org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:278) org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802) org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58) javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) controller.dao.GenericDAO.<clinit>(GenericDAO.java:28) com.mycompany.mazkrest.UsuarioResource.login(UsuarioResource.java:89) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:483) org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205) org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:309) org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) org.glassfish.jersey.internal.Errors.process(Errors.java:315) org.glassfish.jersey.internal.Errors.process(Errors.java:297) org.glassfish.jersey.internal.Errors.process(Errors.java:267) org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292) org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1139) org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:460) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

E quando eu executo pela segunda vez eu obtenho um NoDefClassFoundError na minha classe DAO.

Estou usando um DAO genérico e para cada classe eu herdo esse dao genérico e crio um dao específico para aquela classe modelo.

Eu já apaguei todas as jars de versões antigas manualmente, já tirei todas as dependências que poderiam dar conflito e o erro persiste.

Eis minhas dependencias do pom.xml:

[code]

org.glassfish.jersey.containers
jersey-container-servlet-core



<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.6.1</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.1</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.6.1</version>
</dependency>

<dependency>
    <groupId>com.voodoodyne.jackson.jsog</groupId>
    <artifactId>jackson-jsog</artifactId>
    <version>1.1</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.6.1</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <!--  <version>${jersey.version}</version>-->
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-search</artifactId>
    <version>5.3.0.Final</version>
</dependency>

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>5.3.0</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.0.1.Final</version>
</dependency>

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <type>jar</type>
</dependency>

[/code]

Eu antes usava o EclipseLink, mas aí tive a brilhante ideia de migrar para o hibernate e estou a algum tempo tentando fazer funcionar, mas não consigo, não importa o que eu tente, obtenho esse erro. Já tentei colocar as dependências do javax.persistence, mas aí percebi que a dependência EntityManager do Hibernate já possui essa dependência. O que eu estou fazendo de errado?

Obrigado.