I suspect your problems are caused by having two different versions of the
Derby jars intermingled. The behavior of CLASSPATH is complex, especially
for things like the JDBC 4.0 autoload features, and Derby jars are often
packaged and bundled into other software packages, making it easy to have
multiple copies of the Derby code without realizing it.
Sometimes, running with "-verbose:class" will give you a clue about which
Derby code is being loaded from which location on the CLASSPATH.
But, perhaps you are encountering some other problem that isn't clear to me.
Can you isolate your problematic code as a minimum viable test case and
Ideally, start by taking a very simple test program such as the one from
the Derby tutorial (
and then make the minimum necessary changes to it to demonstrate the
problem you're having.
Then share that code with the list.