The imports of the DataNucleus OSGi bundles do currently not specify version constraints. For example javax.transaction is imported as:
This means import version 0.0.0. Normally this shouldn't be a problem since OSGi will look for the bundle who exports those packages with the highest version (in the case of javax.transaction probably version 1.1.0). Unless there is a bundle present which actually exports version 0.0.0. Now javax.transaction is by default not present in the Java 5 JRE, but it is present in the Java 6 JRE. So far this shouldn't be a problem because no bundle exports these JRE packages in a default OSGi environment.
However for the DataNucleus plugin system you need the Eclipse registry bundles and 'org.eclipse.core.runtime' does reexport all these packages with their version 0.0.0. And this is the crux of the story, other bundles besides DataNucleus specify javax.transaction with its version (1.1.0) and get the javax.transaction package from the javax.transaction bundle but DataNucleus doesn't specify a version and gets the package from the JRE.
In the Eclipse community they call it 'the ever present evil of the org.eclipse.core.runtime's use of re-export for the org.eclipse.osgi bundle'. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=298318
. So while this is probably more of an Eclipse issue then a DataNucleus issue, having version constraints on OSGi imports is also good practice.