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

Langage Java Discussion :

Script fonctionne mais s'arrete des la moindre action de mon programme


Sujet :

Langage Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par R1beLlu2B Voir le message
    Le dossier "C:\Users\Fred\Programme R1bellu2B\dlls\" existais pourtant.
    Pourtant l'erreur "java.nio.file.NoSuchFileException: C:\Users\Fred\Programme R1bellu2B\dlls\AutoHotkey.dll" est éléquente : "il n'y a pas de file ...", or on est en train d'ouvrir pour écrire (outputstream), donc ce n'est pas le fichier .dll, mais le dossier dont on parle.

    Apres je ne sais pas ce qu'il c'est passe, mais j'ai ajoute la ligne que vous m'avez conseille (file.create)

    En revanche ici :
    Citation Envoyé par R1beLlu2B Voir le message
    ca ma mis le message d'errer suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.nio.file.FileAlreadyExistsException: C:\Users\Fred\Programme R1bellu2B\dlls\AutoHotkey.dll
    comme quoi le dossier existait deja.
    c'est du fichier dont on parle, vu l'exception. Alors effectivement, Files.copy() soulève cette exception si le fichier existe déjà. On peut l'éviter comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Files.copy(inputStream, Paths.get(System.getProperty("user.home")+ "/Programme R1bellu2B/dlls" ,"AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
    Citation Envoyé par R1beLlu2B Voir le message
    J'ai supprime la ligne et plus de message d'erreur.... la j'ai pas compris le pourquoi du comment.
    Maintenant que le fichier s'y trouve, il y est tant qu'on le supprime pas.

    Citation Envoyé par R1beLlu2B Voir le message
    Maintenant je n'es pas bien saisi le fait que la "java.library.path" est un dossier , ni le chemin d'acces que je doit employe pour

    utilise mon script.ahk
    java.library.path c'est une variable système Java qui fonctionne comme la variable d'environnement PATH de Windows. C'est la liste des dossiers où "Java" va chercher le fichier de bibliothèque native qu'on essaye de charger. Le chemin d'accès à indiquer c'est le chemin du dossier où tu copies la DLL. C'est exactement ce que tu fais en dur en mettant "-Djava.library.path=C:\Users\Fred\Desktop\Programme R1bellu2B\dlls" dans ta ligne de commande, sauf que c'est dynamique (ça copie le fichier à cet endroit, et ça dit que c'est à cet endroit qu'il faut le chercher lors du chargement, sans avoir à l'indiquer dans la ligne de commande, ou sans avoir à copier le fichier dans un dossier qui dans le PATH (la variable d'environnement), ni même à le copier à la main dans ce dossier "C:\Users\Fred\Desktop\Programme R1bellu2B\dlls". Cela fait tout automatiquement sans avoir à faire des trucs spéciaux pour faire tourner ton programme.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #22
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Merci pour les explications,


    J'etais tombe sur le "replace_existing" mais je n'avais pas compris comment l'implante.


    A priori ca a l'air de tourne correctement.

    La dll, est recupere dans "classes", se copie dans .dlls et est utilise par le "setProperty"

    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
     
    import com.sun.jna.Library;
    import java.io.IOException;
    import java.io.InputStream;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
     
    public  class DllController {
     
     
     
     
     
        public interface autoHotKeyDll extends Library {
     
            void addFile(WString s, int a, int b);
           void ahktextdll(WString s);
        Pointer ahkFunction(WString s);
        }
     
     
        {
     
            try
                (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
                System.out.println("loading to sources");
                Files.copy(inputStream, Paths.get(System.getProperty("user.home")+ "/Programme R1bellu2B/dlls" ,"AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
                System.out.println("instal");
                System.setProperty("java.library.path", System.getProperty("user.home")+ "/Programme R1bellu2B/dlls" );
                System.out.println("loading");
                System.out.println("initialisation");
     
     
        } catch (IOException e) {
                e.printStackTrace();
            }

    Le log su run/main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "C:\Program Files\Java\jdk-9.0.4\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.5\lib\idea_rt.jar=60181:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Fred\Desktop\Programme R1bellu2B\target\classes;C:\Users\Fred\.m2\repository\com\1stleg\jnativehook\2.1.0\jnativehook-2.1.0.jar;C:\Users\Fred\.m2\repository\com\google\code\gson\gson\2.8.0\gson-2.8.0.jar;C:\Users\Fred\.m2\repository\net\java\dev\jna\jna\4.1.0\jna-4.1.0.jar" r1bellu2b.norecoil.Main
    loading to sources
    instal
    loading
    initialisation
     
    (Apres c'est le chargement de mes config)
    Loaded Config:

    Je me demande maintenant comment je doit faire pour utilise mon script.ahk

    qui est a la racine du projet et qui doit pouvoir être modifie par l'utilisateur.


    j'ai essaye de laisse c'est ligne la (ce que j'utilisaisau depart pour faire marche ma dll et mon script)

    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
      public interface autoHotKeyDll extends Library {
     
            void addFile(WString s, int a, int b);
          void ahktextdll(WString s);
         Pointer ahkFunction(WString s);
        }
     
    .....
     
     System.out.println("running in " + System.getProperty("sun.arch.data.model"));
     
           System.out.println("Loading dll");
          DllController.autoHotKeyDll libs = (DllController.autoHotKeyDll) Native.loadLibrary("dlls/AutoHotkey.dll", DllController.autoHotKeyDll.class);
     
     
        System.out.println("initialisation");
         libs.ahktextdll(new WString(""));
          libs.addFile(new WString("src/hotkey/script.ahk"), 1, 0);
     
     
     
     
         System.out.println("function call");
        System.out.println("return:" + libs.ahkFunction(new WString("function")));




    mais ca plante le logiciel apres 5/10seconde


    ----------


    Je me demandais pour la java.library.path. si je dit pas de betise je peu la configure dans projet structure de intelij ou pour mon utilisation ca ne serai pas utile?

    Je pose cette question pour au final du projet, je souhaite lui inclure mes librairies et la jvm(celle qui est utilise) pour le rendre autonome


    Merci

    Fred

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par R1beLlu2B Voir le message
    Je me demandais pour la java.library.path. si je dit pas de betise je peu la configure dans projet structure de intelij ou pour mon utilisation ca ne serai pas utile?
    Un EDI (IntellijIdea, Eclipse, NetBeans...), c'est un outil de développement. Le programme pour l'exécution en sera complètement indépendant. Ou alors il faut faire l'exécution toujours à partir de l'IDE, ce n'est pas pratique, et surtout ce n'est pas fait pour ça. Donc non, ne pas compter sur quoique ce soit en lien avec l'IDE pour l'exécution finale.


    Citation Envoyé par R1beLlu2B Voir le message
    Je pose cette question pour au final du projet, je souhaite lui inclure mes librairies et la jvm(celle qui est utilise) pour le rendre autonome
    Il faut utiliser un utilitaire spécial pour packager le programme (faire un installeur d'exécutable), et, là, oui ce genre d'utilitaires gèrent, pour la plupart en tout cas,les problématiques de bibliothèques natives, de variables d'environnement, de config, etc.


    Citation Envoyé par R1beLlu2B Voir le message

    Je me demande maintenant comment je doit faire pour utilise mon script.ahk
    D'une part, tu peux procéder de la même manière pour déployer le script.ahk depuis le jar que celle utilisé pour la dll (getResourceAsStream/Files.copy). Seulement, d'une part, il faut éviter d'écraser le fichier à chaque lancement (pour ne pas virer les modifications), donc simplement tester si le fichier existe avant de faire le déploiement (avec Files.exists()). D'autre part,
    • soit tu veux prendre les modifications uniquement en rélançant le programme, et, donc, il n'a rien à faire de plus
    • prendre en compte les modifications chaque fois qu'on modifie le fichier, même quand le programme tourne, ce que tu pourras faire avec un java.nio.file.WatchService.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #24
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Bonsoir,


    J'ai ecrit ce code suite a vos conseil :

    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
     
    import com.sun.jna.Library;
    import com.sun.jna.Pointer;
    import com.sun.jna.WString;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
     
     
     
    public  class DllController {
     
     
        public interface autoHotKeyDll extends Library {
     
            void addFile(WString s, int a, int b);
     
            void ahktextdll(WString s);
     
            Pointer ahkFunction(WString s);
        }
     
     
        {
     
            try
                    (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
                System.out.println("loading to sources");
                Files.copy(inputStream, Paths.get(System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls", "AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
                System.out.println("instal");
                System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls\\AutoHotkey.dll");
                System.out.println("loading");
     
     
     
     
     
     
     
     
                System.out.println("initialisation");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
     
            try
                (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/script.ahk")) {
                System.out.println("loading to sources");
                Files.exists(Paths.get(System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls", "script.ahk"));
                System.out.println("instal");
                System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls\\script.ahk");
                System.out.println("loading");
     
                System.out.println("initialisation");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    Mon programmes ce charge sans probleme mais toujours je ne recupere toujours pas les action de mon script.


    Je me plante mais ou ?


    Merci


    Fred

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls\\script.ahk");
    il ne faut pas le faire

    Premièrement, script.ahk est un fichier, pas un dossier et en plus ça annuler le précédent pour la dll. Maintenant, tu le charges ou et comment ce script ? C'est le code natif qui le fait ? Ou le code Java ?

    Et par ailleurs, pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls\\AutoHotkey.dll");
    , c'est pareil !
    je te l'ai déjà dit java.library.path ça doit être un DOSSIER ou un REPERTOIRE si tu préfères, pas un FICHIER.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Bonjour,


    Je viens de comprendre l'histoire du java.library path.


    pour le script, je ne sais pas comment le charge avec le code que vous m'avez propose.

    j'arrivais a le charge de cette maniere :

    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
     
     
     
      public interface autoHotKeyDll extends Library {
     
            void addFile(WString s, int a, int b);
     
            void ahktextdll(WString s);
     
            Pointer ahkFunction(WString s);
        }
     
     
     
    {
     
    System.out.println("running in " + System.getProperty("sun.arch.data.model"));
     
            System.out.println("Loading dll");
            autoHotKeyDll lib = (autoHotKeyDll) Native.loadLibrary("AutoHotkey", autoHotKeyDll.class);
     
     
            System.out.println("initialisation");
            lib.ahktextdll(new WString(""));
            lib.addFile(new WString(System.getProperty("user.dir") + "\\script.ahk"), 1, 0);
     
     
            System.out.println("function call");
            System.out.println("return:" + lib.ahkFunction(new WString("function")));
           System.out.println("ready");
     
     
    }

  7. #27
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Donc il faut continuer à le charger de la même manière, mais depuis l'endroit où il est déployé.

    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
     
    ///// DEPLOIEMENT DLL
     
    try
                    (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
                System.out.println("loading to sources");
                Files.copy(inputStream, Paths.get(System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls", "AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
                System.out.println("instal");
                System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls");
                System.out.println("loading");
     
     
     
     
     
     
     
     
                System.out.println("initialisation");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
    ///// DEPLOIEMENT SCRIPT
     
            try
                (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/script.ahk")) {
                System.out.println("loading to sources");
                if ( !Files.exists(Paths.get(System.getProperty("user.dir") , "script.ahk")) {
                System.out.println("instal script.ahk to "+System.getProperty("user.dir"));
                );
     Files.copy(inputStream, Paths.get(System.getProperty("user.dir") , "script.ahk"));
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
    //// LECTURE SCRIPT
     
    System.out.println("Loading dll");
            autoHotKeyDll lib = (autoHotKeyDll) Native.loadLibrary("AutoHotkey", autoHotKeyDll.class);
     
     
            System.out.println("initialisation");
            lib.ahktextdll(new WString(""));
            lib.addFile(new WString(System.getProperty("user.dir") + "\\script.ahk"), 1, 0);
     
     
            System.out.println("function call");
            System.out.println("return:" + lib.ahkFunction(new WString("function")));
           System.out.println("ready");
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #28
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    D'accord,

    Mais ca me repose quelque petit probleme :

    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
    "C:\Program Files\Java\jdk-9.0.4\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.5\lib\idea_rt.jar=50474:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Fred\Desktop\Programme R1bellu2B\target\classes;C:\Users\Fred\.m2\repository\com\1stleg\jnativehook\2.1.0\jnativehook-2.1.0.jar;C:\Users\Fred\.m2\repository\com\google\code\gson\gson\2.8.0\gson-2.8.0.jar;C:\Users\Fred\.m2\repository\net\java\dev\jna\jna\4.1.0\jna-4.1.0.jar" r1bellu2b.norecoil.Main
    loading to sources
    instal
    loading
    initialisation
    loading to sources
    instal script.ahk to C:\Users\Fred\Desktop\Programme R1bellu2B
    Loading dll
    java.nio.file.FileAlreadyExistsException: C:\Users\Fred\Desktop\Programme R1bellu2B\script.ahk
    	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87)
    	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
    	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
    	at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:231)
    	at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
    	at java.base/java.nio.file.Files.newOutputStream(Files.java:218)
    	at java.base/java.nio.file.Files.copy(Files.java:3071)
    	at r1bellu2b.norecoil.DllController.<init>(DllController.java:66)
    	at r1bellu2b.norecoil.Main.<clinit>(Main.java:39)
    java.lang.UnsatisfiedLinkError: Unable to load library 'AutoHotkey': Native library (win32-x86-64/AutoHotkey.dll) not found in resource path (C:\Users\Fred\Desktop\Programme R1bellu2B\target\classes;C:\Users\Fred\.m2\repository\com\1stleg\jnativehook\2.1.0\jnativehook-2.1.0.jar;C:\Users\Fred\.m2\repository\com\google\code\gson\gson\2.8.0\gson-2.8.0.jar;C:\Users\Fred\.m2\repository\net\java\dev\jna\jna\4.1.0\jna-4.1.0.jar)
    	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:271)
    	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
    	at com.sun.jna.Library$Handler.<init>(Library.java:147)
    	at com.sun.jna.Native.loadLibrary(Native.java:412)
    	at com.sun.jna.Native.loadLibrary(Native.java:391)
    	at r1bellu2b.norecoil.DllController.<init>(DllController.java:87)
    	at r1bellu2b.norecoil.Main.<clinit>(Main.java:39)
    Exception in thread "main" 
    Process finished with exit code 1

    le code :
    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
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import com.sun.jna.WString;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
     
    import static com.sun.jna.Native.loadLibrary;
     
     
    public  class DllController {
     
     
        public interface autoHotKeyDll extends Library {
     
            void addFile(WString s, int a, int b);
     
            void ahktextdll(WString s);
     
            Pointer ahkFunction(WString s);
        }
     
     
        {
     
     
    ///// DEPLOIEMENT DLL
     
            try
                    (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
                System.out.println("loading to sources");
                Files.copy(inputStream, Paths.get(System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls", "AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
                System.out.println("instal");
                System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls");
                System.out.println("loading");
     
     
                System.out.println("initialisation");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
    ///// DEPLOIEMENT SCRIPT
     
            try
                    (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/script.ahk")) {
                System.out.println("loading to sources");
                if (Files.exists(Paths.get(System.getProperty("user.dir"), "script.ahk"))) ;
                System.out.println("instal script.ahk to " + System.getProperty("user.dir"));
     
                try {
                    Files.copy(inputStream, Paths.get(System.getProperty("user.dir"), "script.ahk"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
     
     
    //// LECTURE SCRIPT
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
     
        {
            System.out.println("Loading dll");
            autoHotKeyDll lib = (autoHotKeyDll) Native.loadLibrary("AutoHotkey", autoHotKeyDll.class);
     
     
            System.out.println("initialisation");
            lib.ahktextdll(new WString(""));
            lib.addFile(new WString(System.getProperty("user.dir") + "\\script.ahk"), 1, 0);
     
     
            System.out.println("function call");
            System.out.println("return:" + lib.ahkFunction(new WString("function")));
            System.out.println("ready");
     
     
     
        }
    }

    Pour que ca fonctionne, je doit mettre manuellement la .dll a la racine du dossier "classes" et la j'arrive a lance le programme.

  9. #29
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    J'ai tapé un peu à l'arrache directement dans l'éditeur et j'ai fait une erreur là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( !Files.exists(Paths.get(System.getProperty("user.dir") , "script.ahk")) {
                System.out.println("instal script.ahk to "+System.getProperty("user.dir"));
                );
     Files.copy(inputStream, Paths.get(System.getProperty("user.dir") , "script.ahk"));
    C'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( !Files.exists(Paths.get(System.getProperty("user.dir") , "script.ahk")) {
                System.out.println("instal script.ahk to "+System.getProperty("user.dir"));
     Files.copy(inputStream, Paths.get(System.getProperty("user.dir") , "script.ahk"));
    }
    En revanche, toi tu as fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if (Files.exists(Paths.get(System.getProperty("user.dir"), "script.ahk"))) ;
                System.out.println("instal script.ahk to " + System.getProperty("user.dir"));
     
                try {
                    Files.copy(inputStream, Paths.get(System.getProperty("user.dir"), "script.ahk"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
    Ce qui fait carrément l'inverse de ce qu'il faut faire (toi tu écrase le fichier systèmatiquement)


    Tu utilises com.sun.jna.Native.loadLibrary() et pas System.loadLibrary() donc
    When JNA classes are loaded, the native shared library (jnidispatch) is loaded as well. An attempt is made to load it from the any paths defined in jna.boot.library.path (if defined), then the system library path using System.loadLibrary(java.lang.String), unless jna.nosys=true. If not found, the appropriate library will be extracted from the class path (into a temporary directory if found within a jar file) and loaded from there, unless jna.noclasspath=true. If your system has additional security constraints regarding execution or load of files (SELinux, for example), you should probably install the native library in an accessible location and configure your system accordingly, rather than relying on JNA to extract the library from its own jar file.
    Déjà vérifier jna.nosys. Ensuite, ce qui est intéressant, c'est que la bibliothèque gère déjà le chargement de dll directement depuis un jar. Donc on pourrait se passer de la phase de deploiement et charger directement en indiquant le chemin dans le jar.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #30
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    J'ai fait la modification mais toujours pareil...

    j'ai recherche sur le net pour ceci : jna.nosys

    j'ai rien compris XD

    .


    J'ai fait quelque test egalement sur "l'ancienne methode" pour comprendre des petite chose.

    j'ai passe le dossier ou il y a la dll en "sources root"

    ensuite j'ai fait ceci :
    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
     {
                System.out.println("Loading dll");
                autoHotKeyDll lib = (autoHotKeyDll) Native.loadLibrary("/resources/dll/AutoHotkey.dll", autoHotKeyDll.class);
     
     
                System.out.println("initialisation");
                lib.ahktextdll(new WString(""));
     ici --->    lib.addFile(new WString(System.getProperty("user.home") + "/Programme R1bellu2B/src/hotkey/script.ahk"), 1, 0);
     
     
                System.out.println("function call");
                System.out.println("return:" + lib.ahkFunction(new WString("function")));
                System.out.println("ready");
     
            }
    il ne me trouve pas le fichier seulement quand je compile mon jar executable!! pourtant il es bien dedans.


    Apres c'etais seulement une parenthese.


    Quand vous dite se passe du déploiement, sa serai justement de ce se passe de ce code;


    J'ai l'impression de tourne en rond,

    la je suis parti sur ceci :
    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
    package r1bellu2b.norecoil;
     
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import com.sun.jna.WString;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
     
     
     
     
    public  class DllController {
     
     
        public interface autoHotKeyDll extends Library {
     
            void addFile(WString s, int a, int b);
     
            void ahktextdll(WString s);
     
            Pointer ahkFunction(WString s);
        }
     
     
        {
     
     
     
     
     
             try
                    (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
               System.out.println("loading to sources");
              Files.copy(inputStream, Paths.get(System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls", "AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
              System.out.println("instal");
               System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls");
                System.out.println("loading");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
     
     
     
            System.out.println("Loading dll");
            autoHotKeyDll lib = (autoHotKeyDll) Native.loadLibrary("/resources/dll/AutoHotkey.dll", autoHotKeyDll.class);
     
            System.out.println("initialisation");
            lib.ahktextdll(new WString(""));
            lib.addFile(new WString(System.getProperty("user.dir") + "\\hotkey\\script.ahk"), 1, 0);
     
     
            System.out.println("function call");
            System.out.println("return:" + lib.ahkFunction(new WString("function")));
            System.out.println("ready");
     
        }
    }
    pas d'erreur en "run/main" ------> script fonctionne
    pas d'erreur en "console" --------> script ne marche pas


    j'ai vue aussi que si je supprime ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
             try
                    (InputStream inputStream = DllController.autoHotKeyDll.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
               System.out.println("loading to sources");
              Files.copy(inputStream, Paths.get(System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls", "AutoHotkey.dll"), StandardCopyOption.REPLACE_EXISTING);
              System.out.println("instal");
               System.setProperty("java.library.path", System.getProperty("user.home") + "\\Programme R1bellu2B\\dlls");
                System.out.println("loading");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            }
            }
    c'est exactement pareil :
    pas d'erreur en "run/main" ------> script fonctionne
    pas d'erreur en "console" --------> script ne marche pas

    mes fichier: autohotkey. dll et script.ahk sont dans 2 dossier different, respectivement dlls et hotkey a la racine de mon projet et bien entendu un dossier /resources/dll/autohotkey.dll a la racine de "classes"


    J'ai beau cherche de partout, je ne vois pas pourquoi mon script ne prend pas quand mon jar executable est lance.

  11. #31
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par R1beLlu2B Voir le message
    J'ai fait la modification mais toujours pareil...

    j'ai recherche sur le net pour ceci : jna.nosys

    j'ai rien compris XD
    jna.nosys est une propriété systeme. Pour tester sa valeur, il te suffit au démarrage du programme de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(System.getProperty("jna.sys"));
    jna.nosys c'est un propriété utilisée par jna pour savoir s'il doit essayer System.loadLibrary pour charger la dll (si la valeur est true on utilise pas).

    Pour modifier la valeur d'une propriété système :

    1. dans la ligne de commande de lancement de la JVM : -D<nom de la propriété>=>caleur>
    2. programmatiquement avec System.setProperty(nom, valeur)




    En regardant mieux le code, j'ai vu que ce que je t'ai fait faire à la main n'est pas nécessaire : Native.loadLibrary fait tout ça tout seul (le déploiement par File.copy() n'est donc pas nécessaire), en fonction des propriétés systèmes.
    1. jna.nosys=true => pas de recherche selon System.loadLibrary()
    2. jna.classpath=true pas de recherche dans le classpath
    3. jna.library.path -> la liste des dossiers de recherche des dll par Native.loadLibrary().


    Donc, globalement, de ce que je comprends tes tests, tu crois que la dll est bien dans le jar au bon endroit, alors que ce n'est pas le cas.

    Citation Envoyé par R1beLlu2B Voir le message
    j'ai passe le dossier ou il y a la dll en "sources root"
    C'est-à-dire ? Qu'est-ce que c'est "sources root" ?


    Citation Envoyé par R1beLlu2B Voir le message
    ensuite j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     [...]
     ici --->    lib.addFile(new WString(System.getProperty("user.home") + "/Programme R1bellu2B/src/hotkey/script.ahk"), 1, 0);
     
    [...]
            }
    il ne me trouve pas le fichier seulement quand je compile mon jar executable!! pourtant il es bien dedans.
    Effectivement, ce n'est pas normal, puisque le path de script.ahk est aboslu. Maintenant, je ne sais pas ce que fait addFile() ni comment est exploité ensuite le path dans ta bibliothèque.


    Citation Envoyé par R1beLlu2B Voir le message

    Quand vous dite se passe du déploiement, sa serai justement de ce se passe de ce code;
    Je parlais du déploiement de la DLL, pas de la script.ahk. Comme dit précédemment, le script devant être modifiable par l'utilisateur, il est indispensable que cela soit un fichier, donc de déployer ce fichier depuis une version stocké dans le jar une fois et ensuite d'utiliser cette version comme script.


    Citation Envoyé par R1beLlu2B Voir le message
    J'ai l'impression de tourne en rond,
    C'est aussi mon cas, parce que j'ai l'impression de dire la même chose pour la dixième fois, au sujet de ce qui est fichier dans le système de fichier et ce qui est dans le jar et qui n'est pas fichier.
    Tous les problèmes de différence entre l'exécution dans ton IDE et à partir du JAR sont dues au fait que dans ton projet dans l'IDE, tout ce que tu références (DLL et script, et images également) sont des fichiers. Tant que le chemin d'accès au fichier est correct le fichier sera trouvé.
    Lorsque tu "passes au JAR", les fichiers qui sont mis dedans ne peuvent plus être accédés comme des fichiers, parce que ce ne sont pas des fichiers (je parle de la localisation, pas de la lecture du contenu). Les chemins relatifs qui pouvaient fonctionner en exécution dans l'EDI ne peuvent plus fonctionner sans qu'on fasse quelque chose de spécial (comme un accès par classloader et url pour les images par exemple, et un déploiement pour une DLL (et apparament la lib jna a prévu le coup en implémentant ce mécanisme, ce que ne fait pas System.loadLibrary). Attention, l'utilisation dans ce cadre de chemins absolus est trompeur puisque les chemins absolus sont forcément valables pour toute exécution sur ta machine, mais pas sur d'autre : à éviter donc.

    Donc en résumé, si tu as un ressource qui est trouvée en exécution dans le l'IDE, c'est parce que le fichier est bien trouvé et donc que son chemin absolu est bien résolu depuis le chemin relatif que tu indiques et si ça ne fonctionne pas depuis l'exécution en commande du jar, c'est que la ressource ne se trouve pas à l'endroit indiqué (si dans le jar, l'url n'est pas bonne, si dans le filesystème, le chemin absolu (ou l'url) n'est pas bonne), donc soit le chemin (ou url) est incorrect, soit la ressource n'est pas là où elle devrait (ce qui revient au même au final).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #32
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Bonjour,

    Problème résolu.


    Voici ce que j'ai fait :
    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
     public Main() throws IOException {
     
    ........(code de mon programme)
     
        public interface autoHotKeyDll extends Library {
            public void ahkExec(WString s);
            public void ahkdll(WString s,WString o,WString p);
            public void addFile(WString s, int a);
            public void ahktextdll(WString s,WString o,WString p);
            public Pointer ahkFunction(WString f, WString p1, WString p2, WString p3, WString p4, WString p5, WString p6, WString p7, WString p8, WString p9, WString p10);
        }
     
     
        public static void main(String args[]) throws IOException, InterruptedException {
     
        ........(code de mon programme)
     
     
            Pointer pointer;
            String myLibraryPath = System.getProperty("user.dir");
     
            System.setProperty("java.library.path", myLibraryPath);
            System.out.println("running in " + System.getProperty("sun.arch.data.model"));
     
            System.out.println("Loading dll");
            autoHotKeyDll lib = (autoHotKeyDll) Native.loadLibrary("AutoHotkey.dll", autoHotKeyDll.class);
     
     
            System.out.println("initialisation");
            lib.ahktextdll(new WString(""),new WString(""),new WString(""));
            Thread.sleep(100);
            lib.addFile(new WString(System.getProperty("user.dir") + "\\script.ahk"), 1);
            Thread.sleep(100);
     
            System.out.println("function call");
            System.out.println("return:" + lib.ahkFunction(new WString("function"),new WString(""),new WString(""),new WString(""),new WString(""),new WString(""),new WString(""),new WString(""),new WString(""),new WString(""),new WString("")).getString(0));
            Thread.sleep(100);
     
     
        }
    et j'ai mis mon script.ahk et ma dll a la racine de mon dossier du programme.


    Ca fonctionne sous intelij et compilant en .jar


    Voici les deux ligne qui ont résolu mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     String myLibraryPath = System.getProperty("user.dir");
     
            System.setProperty("java.library.path", myLibraryPath);

    je met le sujet en résolu.

    Merci pour votre aide.

    Au plaisir

    Fred

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2015, 09h19
  2. Script fonctionne sous firefox et safari mais pas sous IE !
    Par philodido dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2009, 12h21
  3. Réponses: 10
    Dernier message: 29/05/2007, 13h16
  4. [PHP-JS] Script fonctionnant PHP 4 mais non en PHP 5 ?
    Par hepcowl dans le forum Langage
    Réponses: 3
    Dernier message: 08/03/2007, 22h30
  5. Mon script fonctionne avec un bouton, mais pas avec l'image!
    Par julien.63 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/04/2006, 17h26

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