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

Ada Discussion :

Interfaçage Ada/Java : Utilisation des constructeurs avec Java_Constructor


Sujet :

Ada

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Points : 8
    Points
    8
    Par défaut Interfaçage Ada/Java : Utilisation des constructeurs avec Java_Constructor
    Bonjour,

    Je souhaiterais faire appel à des méthodes java à partir de mon code Ada.

    Pour cela, j'ai vu qu'il était possible d'utiliser jvm2ada qui me génère les spec nécessaire.

    Néanmoins, le problème se présente lorsque que je veux faire appel au constructeur dans ma procédure qui me sert de main. Après un build j'obtiens ceci
    undefined reference to `_new_foo'

    Une idée ?

    Configuration:
    Gnat-GPL 2009
    JVM-GNAT 2009
    Eclipse Indigo avec GnatBench 2.5
    SDK 1.5
    modification de la bibliothèsque JRE suivant les indications de ce lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // code en java
    public class Foo {
        public int x;
        public int Y;
     
        public void someProcedure (int i){
        	System.out.println("i=" + i);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    -- spec obtenu de jvm2ada
     
    pragma Extensions_Allowed (On);
    with Java.Lang.Object;
     
    package Foo is
       pragma Preelaborate;
     
       -----------------------
       -- Type Declarations --
       -----------------------
     
       type Typ;
       type Ref is access all Typ'Class;
     
       ------------------------
       -- Array Declarations --
       ------------------------
     
       type Arr_Obj is array (Natural range <>) of Ref;
       type Arr     is access all Arr_Obj;
       type Arr_2_Obj is array (Natural range <>) of Arr;
       type Arr_2     is access all Arr_2_Obj;
       type Arr_3_Obj is array (Natural range <>) of Arr_2;
       type Arr_3     is access all Arr_3_Obj;
     
       type Typ is new Java.Lang.Object.Typ with record
     
          ------------------------
          -- Field Declarations --
          ------------------------
     
          X : Java.Int;
          pragma Import (Java, X, "x");
     
          Y : Java.Int;
          pragma Import (Java, Y, "Y");
     
       end record;
     
       ------------------------------
       -- Constructor Declarations --
       ------------------------------
     
       function New_Foo (This : Ref := null)
                         return Ref;
     
       -------------------------
       -- Method Declarations --
       -------------------------
     
       procedure SomeProcedure (This : access Typ;
                                P1_Int : Java.Int);
     
       ---------------------------
       -- Variable Declarations --
       ---------------------------
     
       Global : Java.Int;
    private
       pragma Convention (Java, Typ);
       pragma Java_Constructor (New_Foo);
       pragma Import (Java, SomeProcedure, "someProcedure");
     
    end Foo;
    pragma Import (Java, Foo, "Foo");
    pragma Extensions_Allowed (Off);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    -- sous programme servant de main
    with Ada.Text_IO;  use Ada.Text_IO;
    with Foo;  use Foo;
    with Java;  use Java;
     
    procedure main is
     
    instance : Foo.Ref ;
     
    begin
       Put_Line ("Hello World!");
       instance := New_Foo(This => null);
    end main;

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    En y repensant, ça doit être au niveau du link avec le code de ma classe Foo qu'il y a un problème. Il n'y a pas de fichier Foo.o...

    Mais ce que j'essayais de faire ne correspondait pas à ce que je souhaitais faire. Là, j'essayais de faire un exécutif qui ferait appel à des méthodes d'une classe java.
    Mon but était d'écrire une classe java qui fait appel à des opérations de code en Ada qui lui même fait appel à des méthodes d'une autre classe Java.

    J'ai déjà réussi à faire la 1ere étape, soit l'appel d'opération Ada depuis Java via Gnat-AJIS qui me créer une librairie dll représentant mon code Ada et qui est chargé dans la JVM. Donc ce qu'il faudrait que j'essaye de faire c'est de faire en sorte que ma librairie dll appelle les méthodes de ma classe Java en allant voir dans la JVM.

    Est ce quelqu'un aurait jeté un oeil à ce que a fait Henri ?
    Si j'ai bien compris, il produit un exécutable en jar qui va exécuter son Ada qui utilise la bibliothèque JRE, c'est bien ça ?

Discussions similaires

  1. Souci avec utilisation des constructeurs
    Par Khalfe dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 09/04/2020, 01h11
  2. [JMS] Utilisation des "queue" avec JMS
    Par be_tnt dans le forum Java EE
    Réponses: 1
    Dernier message: 01/11/2006, 16h05
  3. [JTABLE] Peut-on utiliser des autoFilters avec une JTable
    Par Nico+10) dans le forum Composants
    Réponses: 3
    Dernier message: 18/09/2006, 19h53
  4. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 09h18
  5. Utiliser des webservices avec nusoap
    Par budiste dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2006, 11h56

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