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. We need your name and email address only for verifying a legitimate comment. For more information, a copy of your saved data or a request to delete any data under this address, please send a short notice to michael@simons.ac from the address you used to comment on this entry.
By entering and submitting a comment, wether with or without name or email address, you'll agree that all data you have entered including your IP address will be checked and stored for a limited time by Automattic Inc., 60 29th Street #343, San Francisco, CA 94110-4929, USA. only for the purpose of avoiding spam. You can deny further storage of your data by sending an email to support@wordpress.com, with subject “Deletion of Data stored by Akismet”.
Required fields are marked *