Hibernate java.lang.VerifyError:在分支处应为stackmap帧。。。JPA+postgresql

Hibernate java.lang.VerifyError:在分支处应为stackmap帧。。。JPA+postgresql,hibernate,postgresql,jpa,bytecode-manipulation,Hibernate,Postgresql,Jpa,Bytecode Manipulation,在启动将一些对象从服务器返回到ExtJs的方法时,我经常遇到错误。 我是JavaEE的新手,我想我在什么地方犯过错误 以下是JBossDevStudio控制台的日志: 11:04:37,217 ERROR [io.undertow.request] (default task-20) UT005023: Exception handling request to /SimpleApp/rest/person: org.jboss.resteasy.spi.UnhandledException:

在启动将一些对象从服务器返回到ExtJs的方法时,我经常遇到错误。 我是JavaEE的新手,我想我在什么地方犯过错误

以下是JBossDevStudio控制台的日志:

11:04:37,217 ERROR [io.undertow.request] (default task-20) UT005023: Exception handling request to /SimpleApp/rest/person: org.jboss.resteasy.spi.UnhandledException: java.lang.VerifyError: Expecting a stackmap frame at branch target 18
Exception Details:
Location:
entity/Person._persistence_isAttributeFetched(Ljava/lang/String;)Z @4: ifnull
Reason:
Expected stackmap frame at this location.
Bytecode:
0000000: 2ab4 005f c600 0e2a b400 5f2b b600 bd99
0000010: 0007 04a7 0004 03ac                    

at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:76) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:212) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:149) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:372) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.10.Final.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_67]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_67]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_67]
Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 18
Exception Details:
Location:
entity/Person._persistence_isAttributeFetched(Ljava/lang/String;)Z @4: ifnull
Reason:
Expected stackmap frame at this location.
Bytecode:
0000000: 2ab4 005f c600 0e2a b400 5f2b b600 bd99
0000010: 0007 04a7 0004 03ac                    

at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_67]
at java.lang.Class.forName(Unknown Source) [rt.jar:1.7.0_67]
at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:88) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.eclipse.persistence.descriptors.ClassDescriptor.convertClassNamesToClasses(ClassDescriptor.java:1214) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.eclipse.persistence.sessions.Project.convertClassNamesToClasses(Project.java:362) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:322) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195) [eclipselink.jar:2.0.2.v20100323-r6872]
at org.jboss.as.jpa.container.TransactionScopedEntityManager.createEntityManager(TransactionScopedEntityManager.java:177) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
at org.jboss.as.jpa.container.TransactionScopedEntityManager.getEntityManager(TransactionScopedEntityManager.java:82) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
at org.jboss.as.jpa.container.AbstractEntityManager.createQuery(AbstractEntityManager.java:130) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
at main.Controller.getPeople(Controller.java:38) [classes:]
at main.Controller.personSort(Controller.java:48) [classes:]
at main.Controller$Proxy$_$$_WeldClientProxy.personSort(Unknown Source) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_67]
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237) [resteasy-jaxrs-3.0.10.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) [resteasy-jaxrs-3.0.10.Final.jar:]
... 31 more
当我在ExtJS中单击网格上的列标签时,我会在服务器上激发方法,该方法应该向数据库请求记录,使用我提供的参数对它们进行排序,然后返回给客户端。首先,我想调用getPeople方法而不发生任何崩溃,稍后我将考虑其余的问题。ExtJS和服务器之间的通信工作正常。 以下是我实现的类和persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
       xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
       <persistence-unit name="SimpleApp" transaction-type="JTA">
             <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
             <jta-data-source>java:jboss/datasources/sampleDS</jta-data-source>

             <class>entity.Person</class>
              <properties>
                    <!-- Properties for Hibernate -->
                    <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/sampleDB"/>
                    <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
                    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
                    <property name="hibernate.connection.username" value="postgres"/>
                    <property name="hibernate.connection.password" value="admin"/>
                    <!--property name="hibernate.archive.autodetection" value="class"/ -->
                    <property name="hibernate.show_sql" value="true" />
                    <property name="hibernate.format_sql" value="true" />
                    <!--property name="hibernate.hbm2ddl.auto" value="update" /-->
                    <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
                    <property name="javax.persistence.sql-load-script-source" value="META-INF/db_init.sql"/>
                    <property name="javax.persistence.schema-generation.scripts.action" value="none"/>

             </properties>
       </persistence-unit>
</persistence>
控制器:

package main;

import java.util.List;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
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.QueryParam;
import javax.ws.rs.core.MediaType;

import entity.IPersonDao;
import entity.Person;


  @Path("/")

public class Controller {

@Inject
RestService helloService;

@Inject
IPersonDao personDAO;

@GET
@Path("/person")
@Produces({ "application/json" })
public List<Person> personSort(@QueryParam("page") int page,@QueryParam("start") int start,@QueryParam("limit") int limit,@QueryParam("sort") SortParamList sort)
{
    List<Person> people=personDAO.getPeople(); //after that instruction everything crashes
    //return Response.ok("Ok",MediaType.APPLICATION_JSON).build();
    return people;
}
伊佩尔松道:

package entity;

import java.util.List;

import javax.ejb.Local;

@Local
public interface IPersonDao {

    public abstract List<Person> getPeople();

}
package entity;

import java.util.List;

import javax.ejb.Stateful;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;


@Stateful
public class PersonDAO implements IPersonDao {

//  @PersistenceContext(unitName="SimpleApp")
    @Inject
    private EntityManager em;

    //public void Persist(Person person){ ???!?!?!!? O_o
    //  em.persist(person);
    //}
    /* (non-Javadoc)
     * @see entity.IPersonDao#getPeople()
     */

    public List<Person> getPeople(){
        TypedQuery<Person> query=em.createQuery("Select p FROM Person p Order by p.Id",Person.class);
        return query.getResultList();
    }
}
潘松道:

package entity;

import java.util.List;

import javax.ejb.Local;

@Local
public interface IPersonDao {

    public abstract List<Person> getPeople();

}
package entity;

import java.util.List;

import javax.ejb.Stateful;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;


@Stateful
public class PersonDAO implements IPersonDao {

//  @PersistenceContext(unitName="SimpleApp")
    @Inject
    private EntityManager em;

    //public void Persist(Person person){ ???!?!?!!? O_o
    //  em.persist(person);
    //}
    /* (non-Javadoc)
     * @see entity.IPersonDao#getPeople()
     */

    public List<Person> getPeople(){
        TypedQuery<Person> query=em.createQuery("Select p FROM Person p Order by p.Id",Person.class);
        return query.getResultList();
    }
}
persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
       xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
       <persistence-unit name="SimpleApp" transaction-type="JTA">
             <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
             <jta-data-source>java:jboss/datasources/sampleDS</jta-data-source>

             <class>entity.Person</class>
              <properties>
                    <!-- Properties for Hibernate -->
                    <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/sampleDB"/>
                    <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
                    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
                    <property name="hibernate.connection.username" value="postgres"/>
                    <property name="hibernate.connection.password" value="admin"/>
                    <!--property name="hibernate.archive.autodetection" value="class"/ -->
                    <property name="hibernate.show_sql" value="true" />
                    <property name="hibernate.format_sql" value="true" />
                    <!--property name="hibernate.hbm2ddl.auto" value="update" /-->
                    <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
                    <property name="javax.persistence.sql-load-script-source" value="META-INF/db_init.sql"/>
                    <property name="javax.persistence.schema-generation.scripts.action" value="none"/>

             </properties>
       </persistence-unit>
</persistence>
我尝试了许多与@Inject或PersistenContext的组合。
我尝试了UseSplitVerifier选项,但没有任何效果。

结果表明,ExtJs客户端和JavaEE服务器之间的REST通信存在问题。我已经设置了新的Dynamic project,并将persistence.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="y" transaction-type="JTA">
    <jta-data-source>java:jboss/datasources/sampleDS</jta-data-source>
    <class>entity.Person</class>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
      <property name="javax.persistence.jdbc.url"    value="jdbc:postgresql://localhost/sampleDB" />
      <property name="javax.persistence.jdbc.user" value="postgres" />    
      <property name="javax.persistence.jdbc.password" value="admin" />
      <property name="eclipselink.ddl-generation" value="create-tables" />
      <property name="eclipselink.ddl-generation.output-mode" value="database" />
    </properties>
  </persistence-unit>
</persistence>
我还为这个数据源添加了wildfly配置:

 <datasource jndi-name="java:jboss/datasources/sampleDS" pool-name="sampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:postgresql://localhost/sampleDB</connection-url>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>postgres</user-name>
                        <password>admin</password>
                    </security>
                </datasource>

其余的不仅仅是从一个项目到另一个项目的复制/粘贴操作。目前一切正常。但是我无法解释问题的根源。

堆栈映射帧问题通常与使用哪个JDK有关,而JDK为JDK 1.7编写的一些java字节码引入了一些早期JDK中默认的东西。你的情况如何?特别是方法论者._persistence_被描述为。。。这是在哪里创建的?我不清楚你对我说的关于method Person的什么。我不会写的。我使用的是JDK1.8,有人编写了它,您的错误消息对此表示不满,因此解决问题的方法是调试该方法及其来源。您正在使用的字节码增强过程?哪一个JPA实现?不。我从头开始设置这个项目。我想在实践中学习JavaEE,我可以发誓没有其他人参与这个项目。这是尽可能简单的应用程序只是为了我的目的。JPA的版本是2.1I问什么是JPA实现,而不是版本号。这个方法是在某处创建的。。。由你,或由一些自动过程,所以找出在哪里