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] Tableau de String => Problème


Sujet :

Entrée/Sortie Java

  1. #1
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut [JNI] Tableau de String => Problème
    Voila, j'aimerai faire une méthode en JNI qui renvoie une tableau de String ( donc String[] ).

    La voici :

    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
     
    JNIEXPORT jobjectArray JNICALL Java_ProcessHelper_getListProcesses  (JNIEnv *env, jobject obj)
    {
      int i = 0, size;
      char outbuf[MAX_PATH];
      jobjectArray result;
      jclass stringArrayCls ;   
     
      size = (int) GetTaskList();
     
      stringArrayCls = (*env)->FindClass(env, "[Ljava/lang/String;");
      if(stringArrayCls == NULL) {
        printf("Impossible de creer la classe de Tableau de String");
        return NULL;
      }
     
      result = (*env)->NewObjectArray(env, size, stringArrayCls, NULL);
      if(result == NULL)
      {
        return NULL;
      }
     
      // temporaire mais pour être sur d'avoir une chaine valide
      strcpy(outbuf, "test");
     
      for(i = 0 ; i < 10; i++) {
        jstring temp = (*env)->NewStringUTF(env, outbuf);
        (*env)->SetObjectArrayElement(env, result, i, temp);
        (*env)->DeleteLocalRef(env, temp);
     
      }
     
      return result;
     
     
    }
    Cependant, quand je l'utilise j'obtient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exception in thread "main" java.lang.ArrayStoreException
    	at ProcessHelper.getListProcesses(Native Method)
    	at ProcessHelper.main(ProcessHelper.java:21)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

    Etant mes premiers pas en JNI, je cherche mais je vois pas ou est le probleme.

    RQ : si vous avez des remarques sur ma manière de programmer en JNI ( mauvaise gestion de mémoire etc ), je suis preneur.
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    je crois qu'en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stringArrayCls = (*env)->FindClass(env, "[Ljava/lang/String;");
    result = (*env)->NewObjectArray(env, size, stringArrayCls, NULL);
    result est de type tableau de tableau de String


    tu devrais essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stringArrayCls = (*env)->FindClass(env, "java/lang/String");
    result = (*env)->NewObjectArray(env, size, stringArrayCls, NULL);

  3. #3
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    De fait ..

    Avec cette correction, ca marche mieux, bizarre


    Merci
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

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

Discussions similaires

  1. Problème de tableau de string
    Par on2101 dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/02/2011, 12h34
  2. [JNI] création d'un tableau de Strings
    Par myryad dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/04/2008, 11h51
  3. Problème de cast en transformant un Vector en tableau de String
    Par montabou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/11/2006, 18h58
  4. Problème avec StingTokenizer vers tableau de String
    Par nicofromChina dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 06/10/2006, 11h22
  5. [JNI] Retourner un tableau de String via JNI
    Par seiryujay dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 25/07/2006, 09h58

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