You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2010/01/04 16:45:54 UTC

[jira] Commented: (OPENJPA-1410) Class linkage exception when creating an EMF with OpenJPA M3

    [ https://issues.apache.org/jira/browse/OPENJPA-1410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12796218#action_12796218 ] 

Mark Struberg commented on OPENJPA-1410:
----------------------------------------

this also happens to me on Linux (Fedora 11 x86_64) if running on tomcat-6 (tried 6.0.18 and 6.0.20) but _not_ on jetty-6!

I'm using the openjpa-all-2.0.0-M3 package dependency.

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading for a different type with name "org/apache/openjpa/conf/OpenJPAConfiguration"
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
	at org.apache.openjpa.persistence.validation.ValidationUtils.setupValidation(ValidationUtils.java:53)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.loadValidator(PersistenceProviderImpl.java:290)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:97)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:151)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:59)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:159)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:71)
	at org.apache.webbeans.resource.spi.se.ResourceServiceImpl.getPersistenceUnit(ResourceServiceImpl.java:111)
	at org.apache.webbeans.resource.spi.se.ResourceServiceImpl.getPersistenceContext(ResourceServiceImpl.java:125)
	at org.apache.webbeans.resource.spi.se.ResourceServiceImpl.getResource(ResourceServiceImpl.java:59)
	at org.apache.webbeans.resource.OpenWebBeansResourcePlugin.injectResources(OpenWebBeansResourcePlugin.java:61)


> Class linkage exception when creating an EMF with OpenJPA M3
> ------------------------------------------------------------
>
>                 Key: OPENJPA-1410
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1410
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: validation
>    Affects Versions: 2.0.0-M3
>         Environment: Tomcat and Glassfish, OpenJPA M3
>            Reporter: Jeremy Bauer
>
> Posted by Seth Jackson on the user forum[1].
> It appears something was modified in OpenJPA 2.0 M3 from M2 that causes a
> LinkageError.
> In my current environment, I've tested both Glassfish and Tomcat using M2
> and M3. M2 runs without problems, but M3 throws a linkage error as follows:
> Caused by: java.lang.LinkageError: loader constraint violation: loader
> (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading
> for a different type with name
> "org/apache/openjpa/conf/OpenJPAConfiguration"
>        at java.lang.ClassLoader.defineClass1(Native Method)
>        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
>        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
>        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>        at
> org.apache.openjpa.persistence.validation.ValidationUtils.setupValidation(ValidationUtils.java:53)
>        at
> org.apache.openjpa.persistence.PersistenceProviderImpl.loadValidator(PersistenceProviderImpl.java:290)
>        at
> org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:97)
>        at
> org.apache.openjpa.persistence.OpenJPAPersistence.createEntityManagerFactory(OpenJPAPersistence.java:128)
>        at
> org.apache.openjpa.persistence.OpenJPAPersistence.createEntityManagerFactory(OpenJPAPersistence.java:111)
>        at test_test.user.UserAction.execute(UserAction.java:39)
> I've already confirmed that the OpenJPA classes in question do NOT exist in
> any other JARs in the path.
> ValidationUtils.setupValidation(ValidationUtils.java:53) calls the
> OpenJPAConfiguration.getConfigurationLog(). The object being referenced is
> JDBCConfigurationImpl, which in other classes retrieves the log reference
> perfectly fine, before it gets to the offending line.
> Seth's follow up[2]:
> After further review, using Glassfish 2.1.1 I received this error message in
> the server log:
> Caused by: java.lang.LinkageError: loader constraint violation: when
> resolving method
> "org.apache.openjpa.persistence.validation.ValidationUtils.setupValidation(Lorg/apache/openjpa/conf/OpenJPAConfiguration;)Z"
> the class loader (instance of org/apache/catalina/loader/WebappClassLoader)
> of the current class,
> org/apache/openjpa/persistence/PersistenceProviderImpl, and the class loader
> (instance of sun/misc/Launcher$AppClassLoader) for resolved class,
> org/apache/openjpa/persistence/validation/ValidationUtils, have different
> Class objects for the type org/apache/openjpa/conf/OpenJPAConfiguration used
> in the signature
> So it appears to be the WebappClassLoader and the AppClassLoader are both
> loading the OpenJPAConfiguration from the same JAR file, causing the error
> when the class is trying to be resolved in this particular method.
> [1] http://n2.nabble.com/Struts-2x-OpenJPA-2-0-M3-Tomcat-or-Glassfish-tp4087312p4087312.html
> [2] http://n2.nabble.com/Struts-2x-OpenJPA-2-0-M3-Tomcat-or-Glassfish-tp4087312p4093228.html

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