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

Entrée/Sortie Java Discussion :

[JNI] problème de création d'un jObjectArray


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut [JNI] problème de création d'un jObjectArray
    Bonjour,

    je développe en C et Java en utilisant JNI (un programme Java appelle des fonctions C), et je souhaite mettre à la disposition du programme C une méthode Java.

    La méthode est définie dans ma classe Java (elle prend 2 strings en entrée et génère un string en sortie):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private String formatString(String inputString, String method) {
    	return "\"" + inputString + "(" + method + ")\"";
    }
    Dans mon programme C, je la retrouve comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!(mid = (*env)->GetMethodID(env, cls, "formatString", 
    		                       "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"))) {
    		// error
    }
    La méthode est reconnue et peut être appelée. Si je rajoute, après le GetMethod, quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jresult = (*env)->CallObjectMethod(env, objet, mid);
    j'optiens bien la chaîne générée par la méthode java.


    Mon problème, c'est le passage de paramètres à ma méthode java. Je crée un jobjectArray args, et je le remplis comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    args= (*env)->NewObjectArray(env,
    		 		     2,
    				     (*env)->FindClass(env, "java/lang/String"),
    				     NULL);
     
    (*env)->SetObjectArrayElement(env,
    		args,0,(*env)->NewStringUTF(env, "mon_inputString"));
    (*env)->SetObjectArrayElement(env,
    		args,1,(*env)->NewStringUTF(env, "ma_methode"));

    Lorsque j'appelle ma méthode avec les arguments:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	jresult = (*env)->CallObjectMethod(env, objet, mid, args);
    je me retrouve avec une erreur lors de l'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
            at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
            at java.lang.AbstractStringBuilder.append(Unknown Source)
            at java.lang.StringBuffer.append(Unknown Source)
    Ai-je mal créé mon objectArray ?
    Merci !

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut
    En fait, j'envoyais un tableau de strings, alors que je devais envoyer 2 strings (sans tableau), d'où mon erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/06/2004, 15h02
  2. [JNI]problème option -Djava.library.path
    Par sylviiie dans le forum ANT
    Réponses: 2
    Dernier message: 18/05/2004, 08h54
  3. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59
  4. Problème de création de fenêtre
    Par tomateauketchup dans le forum DirectX
    Réponses: 1
    Dernier message: 08/06/2003, 19h42
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

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