With the fix for
DERBY-4588, the diagnostic property derby.stream.error.logBootTrace can be used to diagnose dual boot issues. Typically when two jvm's or class loaders attempt to boot derby the error message below will appear:
ERROR XJ040: Failed to start database 'testdb' with class loader sun.misc.Launch
er$AppClassLoader@481e481e, see the next exception for details.
ERROR XSDB6: Another instance of Derby may have already booted the database C:\derby\testdb
and will show the stack trace and class loader of the failed boot attempt. It is sometimes also useful to see the stack trace when the first successful boot attempt occured. To see the stack trace of successful boots and shutdowns, set derby.stream.error.logBootTrace=true to trace the successful attempt. If you think that both attempts should be from the same class loader context, check also the class loader information for boot and shutdown attempts and make sure they all come from the same class loader context.