0

I have configured a simple sample dynamic web project in eclipse using openjpa, but I always get a Verfy error. Now I'm at a point that I have no idea anymore. I using TBD plugin for enhancing entity code.

So have you a hint whats worng:

Geronimo Application Server started
20  web99  INFO   [DefaultThreadPool 0] openjpa.Runtime - OpenJPA dynamically loaded a validation provider.
21  web99  INFO   [DefaultThreadPool 0] openjpa.Runtime - Starting OpenJPA 2.1.1
25  web99  INFO   [DefaultThreadPool 0] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary".
2012-12-13 11:25:29,636 ERROR [[jsp]] Servlet.service() for servlet [jsp] in context with path [/web99] threw exception [java.lang.VerifyError: Expecting a stackmap frame at branch target 43 in method model.Hello.()V at offset 34] with root cause
java.lang.VerifyError: Expecting a stackmap frame at branch target 43 in method model.Hello.()V at offset 34
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1552)
    at ...

the persistent.xml

<persistence-unit name="web99" transaction-type="RESOURCE_LOCAL">
    <class>model.Hello</class>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/Inventarum"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="***"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
    </properties>
</persistence-unit>

Here my code:

public class Db {

    private EntityManagerFactory factory;
    private EntityManager manager;

    public Db(){
        factory = Persistence.createEntityManagerFactory("web99");
        manager = factory.createEntityManager();
    }

    public String getInfo(){
        Query query = manager.createQuery("SELECT i FROM Hello i WHERE i.id=1");
        Hello hello = (Hello) query.getSingleResult();
        return hello.getName();
    }

}

The persistence class generated by eclipse:

@Entity
@Table(name="hello")
public class Hello implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(unique=true, nullable=false)
    private int id;

    @Column(length=255)
    private String name;

    public Hello() {
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

thx

Olaf

2 Answers2

0

Using JDK1.7(+) and OpenJPA version in use doesn't support it yet? That's what stackmap frame errors typically mean

DataNucleus
  • 15,497
  • 3
  • 32
  • 37
0

Move to version 2.2.0 of OpenJPA.

https://issues.apache.org/jira/browse/OPENJPA-2085

Rick
  • 3,830
  • 1
  • 18
  • 16