It looks like Apple's implementation of sun.security.pkcs11.SunPKCS11 is
different from the version that the accompanying build of Derby has been built
against, resulting in an incompatibility. I downloaded a copy of the build and
ran it on my mac, and instantly reproduced the problem. Looking in the derby
log, I spotted this LinkageError:
Database Class Loader started - derby.database.classpath=''
2011-05-10 15:56:30.053 GMT Thread[main,5,main] (XID = 146), (SESSIONID = 3),
(DATABASE =
/Users/jgrassel/Downloads/apache-openjpa-2.1.0/examples/simple/hellojpa/hellojpa-database),
(DRDAID = null), Cleanup action starting
2011-05-10 15:56:30.053 GMT Thread[main,5,main] (XID = 146), (SESSIONID = 3),
(DATABASE =
/Users/jgrassel/Downloads/apache-openjpa-2.1.0/examples/simple/hellojpa/hellojpa-database),
(DRDAID = null), Failed Statement is: EXECUTE STATEMENT SYS."getColumns"
java.lang.LinkageError: loader (instance of sun/misc/Launcher$ExtClassLoader):
attempted duplicate class definition for name: "sun/security/pkcs11/SunPKCS11"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[big snip]
Now, Apple ships a copy of derby with Snow Leopard, it's in /usr/share/derby.
I modified the build.xml to use that version of derby instead of the version
that comes with the openjpa zip file:
[starting at line 79 in examples/simple/build.xml:]
<fileset dir="${root}">
<include name="openjpa-all-*.jar"/>
<!-- <include name="lib/derby*.jar"/> -->
</fileset>
<fileset dir="/usr/share/derby">
<include name="lib/derby*.jar"/>
</fileset>
With that classpath modification, the sample started to work.
On Apr 21, 2011, at 2:52 AM, Joep Simons wrote:
> Hi,
>
> I got the following output:
>
> On another note: The exception disappeared in my 'test-code' when I added a
> second @entity object with a relation to the first. Not sure if that means
> something, but at least I can continue.
>
> buildfile:
> /Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/examples/simple/hellojpa/build.xml
>
> pre-compile:
>
> compile:
> [javac]
> /Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/examples/simple/build.xml:104:
> warning: 'includeantruntime' was not set, defaulting to
> build.sysclasspath=last; set to false for repeatable builds
>
> run:
> [echo] =============================================
> [echo] javaagent:
> /Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/openjpa-2.2.0-20110415.075847-49.jar
>
> [echo] parent :
> /Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/examples/simple/hellojpa/..
>
> [echo] root :
> /Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/examples/simple/hellojpa/../../..
>
> [echo] myCp :
> /Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/examples/simple:/Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/lib/derby-10.5.3.0_1.jar:/Users/simons/openjpa/apache-openjpa-2.2.0-SNAPSHOT/openjpa-all-2.2.0-SNAPSHOT.jar
>
> [echo] =============================================
> [java] Exception in thread "main" <openjpa-2.1.0-r422266:1071316
> nonfatal general error> org.apache.openjpa.persistence.PersistenceException:
> Already closed.
> [java] at
> org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:558)
> [java] at
> org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:
>
> --
> View this message in context:
> http://openjpa.208410.n2.nabble.com/Can-t-get-hellopjpa-from-examples-working-tp6262603p6293513.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.