Bonjour.

J'ai un problème de mise en place de la librairie SAP JCo pour une utilisation sous Oracle.
Je pense que ce problème n'est pas spécifique à la librairie JCo mais à l'utilisation en général d'une librairie Java externe dans l'environnement Oracle.

Environnement :
- Oracle 10g R1
- JRE 1.4.2
- HP-UX 11.11 PA-RISC 64bits
- SAP JCo v2.1.9 (v3.0 non utilisée puisque non compatible avec un JRE < 1.5).

Ce que j'ai fait :
- J'ai copié l'archive SAP JCo sous $ORACLE_HOME/jco/.
- J'ai désarchivé l'archive. J'obtiens les fichiers sapjco.jar, librfccm.sl et libsapjcorfc.sl sous $ORACLE_HOME/jco.
- J'ai modifié ou créé les variables d'environnement
CLASSPATH=$ORACLE_HOME/jco/sapjco.jar
SHLIB_PATH=$ORACLE_HOME/jco
LD_LIBRARY_PATH=$ORACLE_HOME/jco (<<-- c'est cette variable qui est prise en compte dans le java.library.path bien que je sois sur un HP-UX).
- J'ai chargé sapjco.jar via LoadJava dans Oracle (avec l'option -genmissing parce que la librairie livrée n'est pas complète - références manquantes).
- J'ai créé ma source java sous Oracle : pas de problème de compilation.
- J'ai créé un package afin d'appeler ma classe Java.

Lorsque j'appelle la classe via le package, l'erreur suivante est affichée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ORA-29532: Java call terminated by uncaught Java exception: java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [no sapjcorfc in java.library.path]. java.library.path [/oracle/PLUME/jco]
ORA-06512: at "SYS.PKG_SAP2ORA", line 12
ORA-06512: at line 6
Puis j'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
ORA-06512: at "SYS.PKG_SAP2ORA", line 12
ORA-06512: at line 6
La librairie SAP JCo s'appuie sur 2 librairies .SL (shared librairies) 64 bits.

Lorsque je teste ma librairie via la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -jar $ORACLE_HOME/jco/sapjco.jar -stdout
J'obtiens exactement la même erreur que sous Oracle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [no sapjcorfc in java.library.path]. java.library.path [/oracle/PLUME/jco]
Lorsque je teste ma librairie via la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -d64 -jar $ORACLE_HOME/jco/sapjco.jar -stdout
Aucun soucis !

Ma question est donc :
Comment dire à Oracle d'exécuter une classe Java ou ses dépendances en 64 bits ?
Est-ce qu'il faut un JDK ou JRE spécifique ?
Je pense qu'un truc m'échappe...
Toute piste sera la bienvenue.
Merci.

Note :
- En local sur mon poste (XP), mon code marche très bien.
- J'ai cherché sur le net et je suis tombé sur des problèmes identiques.
Seule réponse trouvée "Veuillez acheter mon livre pour avoir des infos.". Vive l'entraide...