IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

LOADJAVA et java 1.5


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut LOADJAVA et java 1.5
    Bonjour
    je voudrais charger une petite application en java dans une base de données Oracle9i. Pour ce faire je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loadjava -user scott/tiger@BD helloWorld.class
    l'objet java_class est bien crée, j'ai verifier avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'JAVA CLASS'
    Ensuite je cree une fonction avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     create function hello RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'Hello.world() return java.lang.String';
    reponse d'oracle est fonction créé.
    Mais quand je veux appeler ma fonction ou A est une variable j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERREUR à la ligne 1 :
    ORA-29541: impossible de résoudre la classe SCOTT.Hello
    J'ai regarde sur le net et apparement faut le compiler avec la version de java delivree avec Oracle. Dans mon cas 1.1.8 ou 1.3.1... mais dans ce cas faut que je recode mon appli... comment est ce que je peux faire pour charger du code java1.5 et l'exécuter comme une fonction ?

    merci de votre aide

  2. #2
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Peut-etre en utilisant une instance 10g ou seraient chargees les classes 5.0. Il faudra also encapsuler les appels de procedure PL/SQL sur l'instance 9i de maniere a rediriger ces appels sur les procedures situees sur la base 10g distante, a travers une passerelle SQL*Net.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Je ne suis pas tres familié avec Java mais un détail me choque :
    Tu charges une classe nommée 'HelloWorld.class', mais tu utilises la fonction 'Hello.world() ' ?
    Ca ne devrait pas être 'HelloWorld.nom_de_ta_fonction()' ?

  4. #4
    Membre averti
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut
    Merci de vos reponses ...
    j'ai pas compris grand chose à la première... j'ai déjà essayer d'installer une 10g personal edition mais j'ai plein de problèms avec c'est pour cette raison que je suis sous 9i release 2 personal edition.

    Pour la reponse d'alain, d'après ce que j'ai lu sur les fonctions, c'est le nom de la fonction que tu appels donc c'est bien "hello". Cela dit j'ai essayé toutes les autres possibilités est l'erreur c'est "this is not a recognised function".

    Je vais essaye de compilier un hello world avec la 1.1.8 pour voir si ca viens bien de la version de Java ...

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Question :
    Ton fichier java se nomme 'helloWorld.class', j'en conclu que la classe qui contient la fonction s'appelle 'helloWorld', je crois même que c'est obligatoire pour les classes 'public'.

    la syntaxe devrait être nomclass.nomfonction() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create function hello RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'helloWorld.world() return java.lang.String';
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create function hello RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'Hello.world() return java.lang.String';
    D'ailleurs quel est le resultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'JAVA CLASS'
    ?
    Hello ou HelloWorld ?

    On pourrait avoir le contenu helloWorld.java, s'il n'est pas trop long bien sur ?

  6. #6
    Membre averti
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut
    il n'y a pas de problem voici la le fichier java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Hello
    {
       public static String world ()
       {
          return "Hello world";
       }
    }
    petite rectification a mon premier post la commande pour loader la classe est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loadjava -user scott/tiger@BD hello.class
    et pas helloWorld.class

    mais le problem ne viens pas de la .. j'ai essaye en compilant avec du java 1.1.8 et j'ai executer les memes commandes et ca a marché.
    donc c'est bien un problem de version de la JRE.
    Donc si quelqu'un sait comment on fait pour remplacer la 1.1.8 par la 1.5 je suis prenneur. J'ai modifier le loadjava.bat mais ca suffit pas

    merci de votre aide

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Es tu obligé de passer par le loadjava ?
    Si tu as les sources de toutes tes classes, pourquoi ne pas laisser Oracle faire la compilation ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "Hello" AS
    import java.io.*;
    import java.lang.*;
     
    public class Hello 
    { 
       public static String world () 
       { 
          return "Hello world"; 
       } 
    }

  8. #8
    Membre averti
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut
    ben il risque de ne pas aimer le code java1.5 puisqu'Oracle va compiler avec du 1.1.8 ou 1.3.1...

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Mr Metalink a dit :
    Ensure that the JDK used to compile the class is compatible with the JDK
    version used within the database, e.g.:

    10.1.0.x - JDK 1.4
    9.2.0.x - JDK 1.3.1
    9.0.1.x - JDK 1.2.x
    8.1.7.x - JDK 1.2.x
    Donc si ton code java utilise des spécificités 1.5, il ne pourra pas tourner sous Oracle 9i.

  10. #10
    Membre averti
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut
    merci pour cette confirmation... je vais contourner le problem en mettant que le minimum de code java dans et le reste je le mettrait a coter...

  11. #11
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    J'avais cru lire que la db10g supportait le JDK 5.0 mais c'etait une erreur. Probablement que Jdev10g le supporte plus ou moins, mais pas la base, effectivement.
    Si tel avait ete le cas, il aurait fallu installer les classes sur une base 10g tout en laissant le reste de l'applicatif sur la 9i, avec un bridge SQL*Net pour faire communiquer les deux instances.

    Ceci mis a part, commencer un nouveau developpement sur 9i au lieu de 10g, c'est dommage.

Discussions similaires

  1. [JAVA] pb avec loadjava
    Par joel.bouvot@accenture.com dans le forum Oracle
    Réponses: 6
    Dernier message: 07/04/2006, 14h51
  2. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 20h17
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo