Oracle JDBC Driver und AspectJ

July 26, 2006 by Michael

Edit for non-german speakers:
This is a solution for “java.lang.ClassNotFoundException: oracle.security.pki.OracleWallet” or “java.lang.ClassNotFoundException: oracle.security.pki.OracleSecretStore”

The Oracle OJDBC driver is missing the two classes oracle.security.pki.OracleWallet and oracle.security.pki.OracleSecretStore. Normally not a problem but with a class loader that preloades all referenced classes, runtime will certainly fail. A work around is to create these to classes as stubs with the exact package name. That will do the trick.

Edit: As an alternative, you can add ${ORACLE_HOME}/jlib/oraclepki.jar to your classpath if you did a full install of a recent oracle client.

Der Oracle OJDBC Treiber hat mir mittlerweile schon mehr als einmal Ärger bereitet.

Der vorläufge Höhepunkt ist sein Nichtfunktionieren im Zusammenhang mit dem Load Time Weaving Class Loader aus dem AspectJ Projekt.

Dem normalen Java Classloader fällt es nicht auf, wenn ich per Class.forName “oracle.jdbc.driver.OracleDriver”, dass zwei Klassen fehlen: oracle.security.pki.OracleWallet und oracle.security.pki.OracleSecretStore. Dem Weaving Classloader hingegen schon.

Ich weiß nicht, was diese beiden Klassen machen, ich sehe nur, dass die entsprechende private Methode in OracleDriver unweigerlich auf einen Fehler laufen muss, so sie denn benutzt wird.

Jedenfalls, das Weaving schlägt fehl, bums, aus die Maus mit LTW Aspekten.

Auf dem Klo hatte ich die simple Idee, einfach in meinem Projekt obige Klassen leer anzulegen. Und siehe da: Wenn sie im Klassenpfad sind, kann ich OracleDriver instanzieren und alle sind glücklich.

Edit: Als Alternative kann man auch ${ORACLE_HOME}/jlib/oraclepki.jar zum Klassenpfad hinzufügen, falls man eine vollständige Installation eines halbwegs aktuellen Oracle Clients hat.

3 comments

  1. Markus wrote:

    es hilft auch ${ORACLE_HOME}/jlib/oraclepki.jar in den classpath zu nehmen 😉

    Posted on August 4, 2007 at 11:07 AM | Permalink
  2. Michael wrote:

    Das werd ich am nächsten Arbeitstag mal direkt nachschauen, ob sowas in einem meiner Oracle Homes rumfliegt.

    Nichts desto trotz ist das dann noch mehr einer dieser WTF?? Oracle Geschichten, etwas, womit man Stunden seiner Zeit verschwenden kann.

    Jedenfalls Danke für den Hinweis!

    Posted on August 4, 2007 at 11:12 AM | Permalink
  3. Michael wrote:

    Hm, Du hast Recht, die Klassen liegen vor und mit dem Jar funktioniert das auch.
    Toll, das sowas nicht im Oracle Forum gepostet wird.

    Posted on August 6, 2007 at 2:41 PM | Permalink
Post a Comment

Your email is never published nor shared. Required fields are marked *