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

WinDev Discussion :

[WD12] Interaction avec Java


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut [WD12] Interaction avec Java
    Bonjour,

    pour le besoin d'une application j'utilise des fichiers .class développés en Java.

    Lorsque ces classes sont chargées en mémoire directement (JavaCharge() des fichiers .class) je n'ai aucun soucis.
    Lorsque ces classes sont regroupées au sein d'un jar je me mange un message d'erreur :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    Erreur à la ligne 55 du traitement Procédure globale PG_SMTP_EnvoyerMail (Composant 'CMP_LomacoMail').
    Une erreur système inattendue est survenue.
    Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
     - une description des circonstances de l'incident
     - les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
     - les informations techniques suivantes
     
    Détails techniques :
     
    Module : jvm.dll
    Adresse de base : 6D7C0000
    Erreur système : Access violation (GPF)
    EIP = 6D8926A4
    OS : Windows XP ou .NET Service Pack 2(5.1.2600)
     
    Informations techniques
     
    Projet : Kherty
    Composant : CMP_LomacoMail
     
    Dump de l'erreur du module <WD120VM.DLL> <12.01Cn>.
     
    - Appel WL :
    Traitement de <PG_SMTP.PG_SMTP_EnvoyerMail>, ligne <55>, thread <0>
     
    - Niveau : erreur fatale (EL_FATAL)
     
    - Code erreur : 1020
     
    - Code erreur WD55 : 0
     
    - Pas de code d'erreur système
     
    - Pas de message d'erreur système
     
    - Que s'est-il passé ?
    Une erreur système inattendue est survenue.
    Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
     - une description des circonstances de l'incident
     - les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
     - les informations techniques suivantes
     
    Détails techniques :
     
    Module : jvm.dll
    Adresse de base : 6D7C0000
    Erreur système : Access violation (GPF)
    EIP = 6D8926A4
    OS : Windows XP ou .NET Service Pack 2(5.1.2600)
     
    - Infos de debug :
    Registres :
     
      EIP = 6D8926A4    EBP = 0012E5FC
      EAX = 00000000    EBX = 00D26230
      ECX = 00000006    EDX = 00000004
      ESI = 00D25400    EDI = 00000000
     
    Pile des appels :
     
    [jvm.dll (6D7C0000)]	6D890AA0 : JNI_GetCreatedJavaVMs() + 7172 bytes
    [WD120JAV.DLL (28460000), 12.00Al, 01F120055n]	28461C85
    [WD120JAV.DLL (28460000), 12.00Al, 01F120055n]	28475493 : GeneralParam() + 433 bytes
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 104253 bytes
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 103643 bytes
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25FAA340
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 42864 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E9C070 : EXT_pszGetMessageErreurDelegue() + 80864 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 49648 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 49584 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48192 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48368 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48240 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48384 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48544 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48560 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 49008 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48464 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 49024 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 132080 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 134128 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48480 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48512 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48528 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 48448 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    [WD120VM.DLL (25E60000), 12.01Cn, 01F120055n]	25E74390 : WL_SetParam() + 3072 bytes-> INVALID, stack increased by 4
    Pile invalide
     
     
    - Infos attachées :
    EIT_PILEWL :
    Procédure globale PG_SMTP_EnvoyerMail (PG_SMTP.PG_SMTP_EnvoyerMail), ligne 55
    Méthode envoyer (CSMTP.envoyer), ligne 88
    Clic sur BTN_ENVOYER (FEN_REDIGER_MSG.BTN_ENVOYER), ligne 31
    Clic sur BTN_TOOLBAR_ECRIRE (FEN_MAIN.BTN_TOOLBAR_ECRIRE), ligne 2
    EIT_COMPOSANT :
    CMP_LomacoMail
    EIT_DATEHEURE : 07/11/2008 10:24:44
     
    - Identifiant dans le .err : 1020
     
     
    Assistance
    Donc concrètement, j'utilise Javamail (mail.jar), j'ai une classe WDMailSMTP.class qui contient une méthode statique prenant les paramètres. C'est l'interface entre Windev (qui n'accepte QUE les méthodes statiques avec JavaExecuteFonction()) et la classe java qui pourrait être réutilisable dans un autre projet java, MailSMTP.class .

    Ma classe WDMailSMTP est donc appelée par un JavaExecuteFonction() dans une procédure globale d'un composant, cette procédure globale est encapsulée par une classe windev (dans ce même composant), la classe est rendue disponible à l'utilisation par le composant (pas la proc globale).

    Le composant est ensuite intégré dans mon projet de base et j'ai donc un composant capable d'envoyer des mails (on construit des mails très simplement avec la classe du composant).
    Le JavaCharge() est exécuté dans le code d'initialisation du projet appelant le composant et surtout pas dans le composant. Malgré ça, cela fonctionne bien avec des .class chargés directement, mais pas moyen d'exécuter des .class inclus dans des JAR.


    Voili voilou... Je pense à contacter le support technique pour voir s'ils supportent l'utilisation des .JAR mais ça me parait dingue, faut pas déconner quand même c'est comme si on pouvait pas utiliser de DLL pour C/C++ ...

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Alors petite nouveauté sympathique suite à des tests ...

    Si je charge avec JavaCharge() uniquement mon .jar (ma biblio donc), si je décompresse le contenu du JAR à l'endroit où il est, et bien ça fonctionne !

    Quand même barjo non ? Donc en fait, Windev ne sait pas aller lire dans le contenu du jar ... il faut lui décompresser l'archive avant et là il marche...

  3. #3
    Membre Expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Par défaut
    Merci pour le retour,

    Transfère ce point au ST, au moins pour avoir leur avis. Si pb il y a, ils devraient corriger rapidement.

  4. #4
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    C'est fait. On verra ça mardi ou mercredi donc.

  5. #5
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Nouveautés ....

    Alors en fait ça marche ... Il faut faire une archive Jar "runnable", même pour s'en servir en tant que bibliothèque.

    Donc dans Eclipse, clic droit sur le projet java dans l'explorateur de packages, ensuite Exporter... ensuite on sélectionne Runnable JAR File dans le noeud Java et pas Fichier JAR.

    Le JAR généré est très différent du JAR précédent, il intègre tous les .class nécessaire à l'exécution de l'application directement dedans en conservant l'arborescence de sous dossier (packages) y compris pour les extensions type javamail.

    Je suis pas un grand spécialiste de java et j'avais pensé que les JAR fonctionnaient comme les DLL en tant que librairie. Je trouve ce fonctionnement un peu bizarre...

    Enfin bref, l'essentiel c'est que ça fonctionne ne mettant tout dans un seul fichier .JAR.

    J'attends quand même les explications de PCSoft.

Discussions similaires

  1. interaction de java class avec Jframe form
    Par khriji dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 19/03/2012, 14h27
  2. Application java en interaction avec Google maps
    Par angelange dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 20/06/2011, 09h34
  3. meilleure base de données avec java
    Par mial dans le forum JDBC
    Réponses: 11
    Dernier message: 10/11/2010, 11h49
  4. Réponses: 3
    Dernier message: 27/01/2004, 16h15
  5. [JNDI] Equivalent avec Java Web Start ?
    Par cameleon2002 dans le forum Java EE
    Réponses: 8
    Dernier message: 18/09/2003, 18h55

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