If DataNucleus checks a manifest file that is missing a symbolic name, it fails with a NPE instead of failing early and returning null. In our case, DataNucleus was checking aspectjtools-1.6.5.jar which has a broken manifest. I believe the expected behavior is for it to return null and ignore that bundle, rather than throw an exception.
The easy solution would be to check if the symbolic name is null. Alternatively, PluginParser.parseManifest could return a null bundle if the symbolic name is missing, but I don't know which behavior is expected.
This might have been in m2 as well, but I couldn't figure out which revision m2 started at. I believe it survived the bad manifest in m1, but I don't know why that would be from briefly glancing at the code.
--- src/java/org/datanucleus/plugin/NonManagedPluginRegistry.java (revision 12679)
+++ src/java/org/datanucleus/plugin/NonManagedPluginRegistry.java (working copy)
@@ -490,7 +490,7 @@
protected Bundle registerBundle(Manifest mf, URL manifest)
Bundle bundle = PluginParser.parseManifest(mf, manifest);
- if (bundle == null)
+ if (bundle == null || bundle.getSymbolicName() == null)
// Didn't parse correctly, so ignore it