[ 
https://issues.apache.org/jira/browse/OPENJPA-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leon Noordermeer updated OPENJPA-721:
-------------------------------------

    Description: 
A ClassFormatError occures when the case of a referenced method in an orm file 
is incorrect. 

I imagine this error could be handled a bit more gracefull with a more 
informative error message. (this one took me 6 hrs to solve). I guess it should 
be handled the same as when the reference to the method can not be found.

example of foo-orm.xml:

<entity class="Foo">
        <table name="FOO" />
        <attributes>
            <id name="FooId"> <!-- should be fooId -->
                <column name="FOO_ID" />
            </id>
        </attributes>
    </entity>


example of Foo.java:

package model;

public class Foo  {
    public Long fooId;

    public Foor() {
    }

    public Long getFooId() {
        return fooId;
    }

    public void setFooId(Long fooId) {
        this.fooId = fooId;
    }
}


The error will look like this:

java.lang.ClassFormatError: Repetitive method name/signature in class file 
com/aciworldwide/tm/configmodule/model/SecretKey
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at 
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
        at 
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:873)
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1326)
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at 
org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1298)
        at 
org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1280)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:276)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190)
        at 
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
etc...


  was:
A ClassFormatError occures when the case of a referenced method in an orm file 
is incorrect. 

I imagine this error could be handled a bit more gracefull with a more 
informative error message. (this one took me 6 hrs to solve). I guess it should 
be handled the same as when the reference to the method can not be found.

example of foo-orm.xml:
[code]
<entity class="Foo">
        <table name="FOO" />
        <attributes>
            <id name="FooId"> <!-- should be fooId -->
                <column name="FOO_ID" />
            </id>
        </attributes>
    </entity>
[/code]

example of Foo.java:
[code]
package model;

public class Foo  {
    public Long fooId;

    public Foor() {
    }

    public Long getFooId() {
        return fooId;
    }

    public void setFooId(Long fooId) {
        this.fooId = fooId;
    }
}
[/code]

The error will look like this:
[code]
java.lang.ClassFormatError: Repetitive method name/signature in class file 
com/aciworldwide/tm/configmodule/model/SecretKey
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at 
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
        at 
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:873)
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1326)
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at 
org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1298)
        at 
org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1280)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:276)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190)
        at 
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
etc...
[/code]


> ClassFormatError occurs when method name is wrong
> -------------------------------------------------
>
>                 Key: OPENJPA-721
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-721
>             Project: OpenJPA
>          Issue Type: Improvement
>    Affects Versions: 1.0.0
>         Environment: Windows, Tomcat 5.5, Spring tomcat weaving 2.05, Oracle 
> 10g
>            Reporter: Leon Noordermeer
>            Priority: Minor
>
> A ClassFormatError occures when the case of a referenced method in an orm 
> file is incorrect. 
> I imagine this error could be handled a bit more gracefull with a more 
> informative error message. (this one took me 6 hrs to solve). I guess it 
> should be handled the same as when the reference to the method can not be 
> found.
> example of foo-orm.xml:
> <entity class="Foo">
>         <table name="FOO" />
>         <attributes>
>             <id name="FooId"> <!-- should be fooId -->
>                 <column name="FOO_ID" />
>             </id>
>         </attributes>
>     </entity>
> example of Foo.java:
> package model;
> public class Foo  {
>     public Long fooId;
>     public Foor() {
>     }
>     public Long getFooId() {
>         return fooId;
>     }
>     public void setFooId(Long fooId) {
>         this.fooId = fooId;
>     }
> }
> The error will look like this:
> java.lang.ClassFormatError: Repetitive method name/signature in class file 
> com/aciworldwide/tm/configmodule/model/SecretKey
>       at java.lang.ClassLoader.defineClass1(Native Method)
>       at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
>       at 
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>       at 
> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
>       at 
> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:873)
>       at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1326)
>       at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
>       at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:242)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1298)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1280)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:276)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190)
>       at 
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
> etc...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to