Oracle et JAVA - Mise en place librairie SAP JCo
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:
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:
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:
java -jar $ORACLE_HOME/jco/sapjco.jar -stdout
J'obtiens exactement la même erreur que sous Oracle :
Code:
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:
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...