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] creer ses propres exceptions


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club Avatar de Batou
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 62
    Points
    62
    Par défaut [JNI] creer ses propres exceptions
    Bonjour,

    Je travaille avec une dll et un programme java.

    2 fonctions sont natives, et je veux qu'elles fassent remonter des exceptions particulieres (que j'ai definies moi meme comme etendant la classe Exception).
    Cependant, je ne sais pas comment encoder ces Exceptions "fait maison" dans ma dll (ou mon cpp qui est a l'origine de ma dll).

    Je continue a chercher...
    Si qqn a une idee
    "It has to start somewhere, It has to start sometime.
    What better place than here, what better time than now?
    " [RATM]

  2. #2
    Membre du Club Avatar de Batou
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    P-e que je me suis mal explique...

    Je veux faire dans mon code Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class MyException extends Exception {
        MyException(String message) {
            super(message);
        }
    }
     
    public class fMemory {
        ...
        public native void f(byte[] b) throws MyException;
        static {
            System.loadLibrary("fMemory");
        }
    }
    Si bien que j'ai code dans mon code C++ :
    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
    #include <stdio.h>
    #include <windows.h>
    #include <iostream>
    #include <sstream>
    #include <exception>
    #include "fMemory.h" 
     
    JNIEXPORT jbyteArray JNICALL Java_fMemory_f(JNIEnv *env, jobject jobj, jbyteArray jarray) {
        ...
        /* controle des parametres et si probleme, alors lancement d'une exception */
        if (parameter == NULL) {
            jclass newExcCls;
            env->ExceptionDescribe();
            env->ExceptionClear();
            newExcCls = env->FindClass("java/lang/Exception/MyException");
                if (newExcCls == NULL) {
                /* Unable to find the exception class, give up. */
                    return;
    	    }
    	    env->ThrowNew(newExcCls, "From dll: function A failed\n");
    	}
        ...
    }
    L'erreur que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/Exception/MyException
    	at felica.fMemory.f(Native Method)
    	at felica.fMemory.main(fMemory.java:399)
    Je pense que la dll ne trouve pas la definition de l'exception MyException parce que MyException est definie dans mon programme mais pas dans l'environnement Java...
    Ce n'est qu'une supposition, et je ne vois pas comment regler le pb.
    "It has to start somewhere, It has to start sometime.
    What better place than here, what better time than now?
    " [RATM]

  3. #3
    Membre du Club Avatar de Batou
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    hello

    J'ai trouve la solution, pour ceux que ca interesserait:

    En fait, il faut changer la ligne dans le cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newExcCls = env->FindClass("java/lang/Exception/MyException");
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newExcCls = env->FindClass("MyPackage/MyException");
    Et tout rentre dans l'ordre !
    La fonction native va ensuite aller naturellement dans MyPackage (l'environnement qui tourne) et trouver la definition de MyException.
    "It has to start somewhere, It has to start sometime.
    What better place than here, what better time than now?
    " [RATM]

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

Discussions similaires

  1. creer ses propres exceptions
    Par hebus666 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 09/12/2007, 15h36
  2. Creer ses propres exceptions ?
    Par Seth77 dans le forum C#
    Réponses: 4
    Dernier message: 05/05/2007, 17h36
  3. Créer ses propres exceptions
    Par Neilos dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/06/2006, 18h44
  4. Créer ses propres Man
    Par byloute dans le forum Linux
    Réponses: 1
    Dernier message: 18/10/2005, 13h46

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