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. #1
    Membre confirmé
    Homme Profil pro
    Artisant
    Inscrit en
    Avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut Script fonctionne mais s'arrete des la moindre action de mon programme
    Bonjour,

    j'ai ajoute un script à mon programme java.
    Pour faire fonctionner mon script, j'ai une dll et un .jar que je pense avoir ajouté comme il se doit.

    Au lancement de mon programme, le script se charge bien et il est fonctionnelle.
    Dans mon programme, j'ai plusieurs actions qui me modifient des paramètres via des touches clavier.
    Exemple : j'appuie sur F8, je reduis la taille de ma fenêtre...F9 je met un mode overlay...etc

    Tout ceci est fonctionnel sans problème mais lorsque je fait une de c'est action, mon script se désactive..


    Mon programme fonctionne toujours mais j'ai perdu les fonctions de mon script.


    ajout du 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import com.sun.jna.WString;
     
     
     
    class DllController {
     
     
        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 libs = (autoHotKeyDll) Native.loadLibrary("AutoHotkey", autoHotKeyDll.class);
     
     
                System.out.println("initialisation");
                 libs.ahktextdll(new WString(""));
                 libs.addFile(new WString("src/hotkey/rapidefire.ahk"), 1, 0);
     
     
     
     
                System.out.println("function call");
               System.out.println("return:" + libs.ahkFunction(new WString("function")));



    Declaration du script dans le Main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      private static void setupEvents() throws NativeHookException {
            Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
            logger.setLevel(Level.SEVERE);
            logger.setUseParentHandlers(false);
            GlobalScreen.registerNativeHook();
            KeyBoardListener keyBoardListener = new KeyBoardListener();
            GlobalScreen.addNativeKeyListener(keyBoardListener);
            MouseListener mouseListener = new MouseListener();
            GlobalScreen.addNativeMouseListener(mouseListener);
            GlobalScreen.addNativeMouseMotionListener(mouseListener);
     
       ici ----->    DllController dllController = new DllController();
     
        }

    Si quelqu'un a une petite idée ?


    merciu

    Fred

  2. #2
    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 : 55
    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
    Salut,

    La classe DllController
    1. déclarre une interface interne
    2. a une initialisation anonyme qui déclare une variable locale, y met une instance de je ne sais quoi, et appelle des méthodes qui font je ne sais quoi


    Ce qui est sûr, ce que l'instance créée et stockée dans la variable libs n'existe plus pour l'exécution du programme dès que l'initialisation est terminée, et sera donc supprimée de la mémoire dès que nécessaire/possible. Est-ce que tu as essayé de déclarer cette variable en tant que membre de la classe ?
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

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


    j'ai supprime la class Dll Controller et fait ceci dans le Main :
    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
    public static class DllController {
     
     
        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 libs = (autoHotKeyDll) Native.loadLibrary("AutoHotkey", autoHotKeyDll.class);
     
     
                System.out.println("initialisation");
                 libs.ahktextdll(new WString(""));
                 libs.addFile(new WString("src/hotkey/rapidefire.ahk"), 1, 0);
     
     
     
     
                System.out.println("function call");
               System.out.println("return:" + libs.ahkFunction(new WString("function")));
     
     
     
     
        }
     
    }
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     static DllController dllController = new DllController();

    avec ceci ca marche comme je le souhaite. Apres je sais pas si c'est la meilleur facon mais j'a icru comprendre que je devais faire ca.

    Maintenant un autre soucis.

    Mon jar executable m'affiche un beau message d'erreur : A JAVA EXCEPTION HAS OCCURED

    et dans la console j'arrive a avoir ca comme message d'erreur :



    C:\Users\Fred>java -jar "C:\Users\Fred\Desktop\Jar test5 fred.jar"
    Erreur : impossible d'initialiser la classe principale main.norecoil.Main
    Causé par : java.lang.NoClassDefFoundError: org/jnativehook/NativeHookException


    Mais je decouvre eclipse et j'ai vraiment du mal avec, j'ai regarde pas mal de tuto mais ca change rien.

  4. #4
    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 : 55
    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

    Mon jar executable m'affiche un beau message d'erreur : A JAVA EXCEPTION HAS OCCURED

    et dans la console j'arrive a avoir ca comme message d'erreur :



    C:\Users\Fred>java -jar "C:\Users\Fred\Desktop\Jar test5 fred.jar"
    Erreur : impossible d'initialiser la classe principale main.norecoil.Main
    Causé par : java.lang.NoClassDefFoundError: org/jnativehook/NativeHookException
    La classe org.jnativehook.NativeHookException n'est pas dans le classpath. Il te faut intégrer les jar externes dans le jar "exécutable". Lorsque tu fais l'export vers le runnable, tu as deux options qui permettent soit de choisir d'intégrer les jars dans le jar exporté, soit de les repackager dans le jar exporté.

    Nom : Capture.JPG
Affichages : 297
Taille : 19,2 Ko
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

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

    j'avais essaye de faire ca mais je me trompais dans la console...

    la mon jar se lance, déja une bonne chose mais il ne trouve une image (image de background) qui pour est bien dans le jar.

    je pense que je doit faire comme avec intelij, avoir un dossier externe au jar mais sans succes.

    voici le 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
    C:\Users\Fred>java -jar C:\Users\Fred\Desktop\test7.jar
    running in 64
    Loading dll
    initialisation
    function call
    return:native@0x17a9fec6594
    javax.imageio.IIOException: Can't read input file!
            at java.desktop/javax.imageio.ImageIO.read(Unknown Source)
            at main.norecoil.Action.<init>(Action.java:16)
            at main.norecoil.Main.<init>(Main.java:76)
            at main.norecoil.Main$3.run(Main.java:175)
            at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.desktop/java.awt.EventQueue.access$500(Unknown Source)
            at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
            at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
            at java.base/java.security.AccessController.doPrivileged(Native Method)
            at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

  6. #6
    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 : 55
    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
    Il faut que le fichier soit intégré au jar. Son accès ne se fera plus par File, parce que dans un jar, ce n'est plus un fichier, mais par URL. Pour obtenir l'URL d'une image dans le classpath, on utilise la méthode getResource() de la classe Class ou ClassLoader (tu peux directement obtenir un InputStream avec getResourceAsStream()). Par exemple, tu mets les images dans un dossier resources, que tu inclus au classpath (il suffit de le créer dans le dossier src dans Eclipse, comme si c'était un package, et les images seront déployées dans les dossiers de classes automatiquement au moment de la build, et donc dans le jar qui contient ces classes quand tu exportes). Ensuite, tu peux faire une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class ImageLoader {
             public static BufferedImage loadImage(String path) throws IOException {
                    return ImageIO.read(ImageLoader.class.getResource(path));
             }
    }
    Pour charger l'image : Image image = ImageLoader.read("/resources/image.png");Si tu utilises avec des ImageIcon, tu peux créer l'ImageIcon en passant l'image en argument du constructeur mais tu peux le faire directement avec l'URL également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             public static ImageIcon loadImageIcon(String path) {
                    return new ImageIcon(ImageLoader.class.getResource(path));
             }
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

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

    j'ai deja mon dossier image dans le src .


    Donc si je comprend bien, je doit modifie la manière dont mon image est appeler actuellement :

    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
    public class Action extends JComponent {
     
     
        String path1 = "src/images/ribellu.png";
        BufferedImage image1 = ImageIO.read(new File(path1));
     
     
     
        Font myFont = new Font("Serif", Font.BOLD, 30);
        Font myFont1 = new Font("Arial arrondi MT Bold", Font.BOLD, 10);
        Font myFont2 = new Font("Arial arrondi MT Bold", Font.BOLD + Font.ITALIC, 8);
     
        Font myFont3 = new Font("Serif", Font.BOLD, 24);
        Font myFont4 = new Font("Arial arrondi MT Bold", Font.BOLD, 9);
        Font myFont5 = new Font("Arial arrondi MT Bold", Font.BOLD + Font.ITALIC, 6);
     
        Font myFont6 = new Font("Serif", Font.BOLD, 18);
        Font myFont7 = new Font("Arial arrondi MT Bold", Font.BOLD, 8);
        Font myFont8 = new Font("Arial arrondi MT Bold", Font.BOLD + Font.ITALIC, 4);
     
        Font myFont9 = new Font("Serif", Font.BOLD, 12);
        Font myFont10 = new Font("Arial arrondi MT Bold", Font.BOLD, 7);
        Font myFont11 = new Font("Arial arrondi MT Bold", Font.BOLD + Font.ITALIC, 2);
     
     
        public Action() throws IOException {
     
        }
     
        @Override
     
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            if (g instanceof Graphics2D) {
    ...
    ...
    ...
    et la remplace par une methode propose si dessus?

  8. #8
    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 : 55
    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

    Donc si je comprend bien, je doit modifie la manière dont mon image est appeler actuellement :
    [...] et la remplace par une methode propose si dessus?
    Oui.
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

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


    J'ai pas mal bosse cette nuit son mon projet.


    J'ai reussi avec les modification a faire marche mon programme sous eclipse. Mais en faite c'est ma dll qui pose probleme.



    J'ai mis de cote eclipse et je suis retourne sur Intelij (je connais mieux le logiciel).


    Je fait fonctionne mon, programme, tout ce charge a merveille lorsque je "run" mon Main, j'ai les fonction de ma .dll et toute les fonctionnalite du programme qui vont avec.

    Et ma dll, j'avais fait un dossier dll a la racine de mon projet avec ma dll dedans mais ca ne marchais pas.

    j'ai du la mettre dans : C:\Program Files\Java\jdk-9.0.4\bin\AutoHotkey.dll dans mon windows





    Ca ce complique un peu lorsque je compile mon jar executable, il fonctionne sans probleme, j'ai les fonction du programme, ma fenetre etc mais pas les fonction de ma .dll

    (d'ailleur je doit mettre en "manuel" ma .dll a cote de mon .jar sinon j'ai une erreur : A java Exception has occured )



    je pense ne pas avoir compris les tuto sur comment ajoute une .dll



    voici comment j'appel ma .dll et le script.ahk :
    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
     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("AutoHotkey", 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")));
     
     
     
     
        }

    Merci

    Fred

  10. #10
    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 : 55
    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
    Pour la dll, le souci c'est qu'une bibliothèque native est cherchée dans le "path" système (défini sous Windows par la variable path). On peut indiquer le dossier (ou les dossiers) de recherche par la variable système java.library.path (la syntaxe est la même que pour la variable d'environnement).

    1. soit tu le mets dans le jar (donc comme n'importe quel ressource), et au run, tu le déploies dans un dossier, le dossier d'exécution par exemple (user.dir), ou dans le user.home (dans un sous-dossier réservé pour ton application), et tu modifies la variable java.library.path en conséquence. Comme c'est une dll, tu testes si tu es sous Windows, si oui tu le copies depuis le jar :

      Simplement comme ça :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      try(InputStream inputStream = FileUtils.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
      			Files.copy(inputStream, Paths.get(targetdirectory, "AutoHotkey.dll"));
      }
      System.setProperty("java.library.path", targetdirectory);
      Avec targetdirectory égal à
      • soit System.getProperty("user.home") + "/applicationtrucbidule" (applicationtrucbidule c'est bien sûr un nom que tu choisis, le nom de ton application à priori)
      • soit System.getProperty("user.dir") le dossier de travail de l'application
    2. avec un programme d'installation (launch4j, inno setup, etc), tu pourras gérer le process de déploiement de la dll.
    3. Avec l'API JarClassloader, tu pourras charger la bibliothèque native directement depuis le jar (sans déploiement).
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Merci pour les explication.

    Mais je ne pense pas avoir compris car mes test effectue sont des echec


    A qu'elle niveau je doit modifie mon code pour la dll?


    Et une question pour mieux comprendre java.

    Pourquoi quand je run mon main cela fonctionne et que quand je creer mon jar executable, il se lance, charge mais ne me donne pas les commande de mon script.


    Merci

    Fred

  12. #12
    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 : 55
    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
    Merci pour les explication.

    Mais je ne pense pas avoir compris car mes test effectue sont des echec


    A qu'elle niveau je doit modifie mon code pour la dll?
    Le code que j'ai indiqué, tu dois le faire au démarrage de ton application, ou, du moins, forcément avant de charger la bibliothèque native (avant l'exécution de System.loadLibrary(...)).


    Citation Envoyé par R1beLlu2B Voir le message
    Et une question pour mieux comprendre java.

    Pourquoi quand je run mon main cela fonctionne et que quand je creer mon jar executable, il se lance, charge mais ne me donne pas les commande de mon script.
    Parce que tu appelles un exécutable, c'est un jar, un fichier donc. Quand tu exécutes ton programme dans l'EDI (ce que je crois que tu appelles "run mon main"), toutes tes ressources sont des fichiers. Dans le jar, ce ne sont plus des fichiers : le jar est un fichier, ce qui est dedans n'en est pas, ce sont juste des octets. Tout système qui pourrait retrouver des machins à l'intérieur et s'en servir comme si c'était les fichiers qu'ils étaient à l'origine est obligé de le faire par du code qui en fait une sort d'équivalence, de simulation.

    En Java, ça passe par une URL qui permet de charger la partie de jar qui correspond au fichier, via un inputstream : il faut juste donc avoir un système qui permet de charger des données à partir d'une URL ou d'un inputstream (la classe URL ayant une méthode openStream()). Avec une image, on a bien une méthode ImageIO.read() qui a un argument de type InputStream, et une méthode qui a un argument de type URL.
    C'est tout l'avantage : on a d'une part

    • des méthodes génériques qui chargent à partir de n'importe quel InputStream, que ça vienne d'un fichier, d'un jar, d'un zip, d'un serveur, ou peut importe
    • de l'autre un système d'URL (Universal Resource Locator), plus généralement URI (Universal Resource Identifier). Un moyen universel de dire où se trouve une resource, et qui en particulier peut fournir un inputstream pour en récupérer les octets.
    • et enfin un système qui permet d'obtenir d'un jar l'URL d'une des ses entrées

    C'est un système simple, souple et universel. Au lieu d'avoir 33000 fonctions qui font des conversions de chaque combinaisons de machins vers trucs. Un autre avantage, c'est qu'un fichier peut aussi être désigné par URL, donc ça marche aussi avec ton projet dans l'EDI quand tout n'est encore que fichier. Avec le même code (le seul if ce serait par rapport à l'OS, mais ça on peut difficilement faire autrement : des DLL c'est pour Windows, c'est tout, c'est comme ça, enfin, quoiqu'on pourrait tout à fait avoir en théorie un format de fichier de lib cross OS, tant que c'est le même µp, et que le code ne fait pas appel à des trucs systèmes).

    Seulement, pas de bol, pour System.loadLibrary(), y'a qu'un argument de type String, qui est un nom de fichier cherché dans la variable d'environnement. Quand la dll c'est un fichier, tant qu'on le met bien à un endroit dans le path, ça marche tout seul. Sinon, ça marche pas.
    Donc soit on le met dans un dossier du path. Et ça, c'est pénible, parce que le 'runnable' n'est pas un seul fichier, y'a le jar et la dll, il faut expliquer au mec qui va l'installer sur son poste où les mettre, tout ça, donc lui expliquer ce qu'est le path, comment ça marche, comment le paramétrer et tout le tintouin, ou alors le forcer à le mettre dans un dossier fixe comme tu avais avec ton jdk, mais dans ce cas, le mec peut-être qu'il veut pas, ou il peut pas, en tout cas tu ne peux pas partir du principe que tout le monde va installer les mêmes applications et dossiers physiques que toi. Et quand bien même tu serais le seul à utiliser l'application, tu auras toujours à un moment donné un problème avec un dossier imposé en dur. Il vaut mieux être le moins dépendant possible de l'environnement. Ou alors on utilise la variable java.library.path, mais ça revient au même, faut expliquer comment l'utiliser, la configurer (dans la ligne de commande), on peut plus lancer le runnable en double-cliquant dessus (ou alors il faut faire un shortcut), bref, c'est aussi pénible, sauf si on utilise un installeur (qui fabrique lui vraiment un exécutable (.exe)).
    Ou alors on le fait par programme, on s'arrange pour notre programme fasse tout ça tout seul, et quelque soit là d'où on le lance, sur n'importe quel environnement. Et donc, soit, comme je te l'ai indiqué, on récrée le fichier à partir du jar (on la packagé dedans, comme n'importe quel fichier), et on s'arrange pour que System.loadLibrary puisse le voir, donc on configure java.library.path. Soit on utilise d'autres moyens (comme les alternatives que je t'ai indiquées, le jarclassloader par exemple).
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    D'accord, je comprend mieux le principe. bien complique quand meme XD


    Pour le code je l'ajoute ici a priori :
    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
    package r1bellu2b.norecoil;
     
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import com.sun.jna.WString;
     
    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 = FileUtils.class.getResourceAsStream("/resources/dll/AutoHotkey.dll")) {
                Files.copy(inputStream, Paths.get(targetdirectory, "AutoHotkey.dll"));
            }
            System.setProperty("java.library.path", targetdirectory);
     
     
     
     
     
            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", DllController.autoHotKeyDll.class);
     
     
            System.out.println("initialisation");
            libs.ahktextdll(new WString(""));
            libs.addFile(new WString("src/hotkey/rapidefire.ahk"), 1, 0);
     
     
     
     
            System.out.println("function call");
            System.out.println("return:" + libs.ahkFunction(new WString("function")));
     
     
     
     
        }
     
    }

    mais je doit supprime cette ligne si je comprend bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DllController.autoHotKeyDll libs = (DllController.autoHotKeyDll) Native.loadLibrary("dlls/AutoHotkey", DllController.autoHotKeyDll.class);


    Je me demande alors comment appele mon script ?

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    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;
     
    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")) {
                Files.copy(inputStream, Paths.get(System.getProperty("user.dir"), "AutoHotkey.dll"));
                System.setProperty("java.library.path", System.getProperty("user.dir"));
        } catch (IOException e) {
                e.printStackTrace();
            }
     
     
     
     
     
     
            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", DllController.autoHotKeyDll.class);
     
     
            System.out.println("initialisation");
            libs.ahktextdll(new WString(""));
            libs.addFile(new WString("src/hotkey/rapidefire.ahk"), 1, 0);
     
     
     
     
            System.out.println("function call");
            System.out.println("return:" + libs.ahkFunction(new WString("function")));
     
     
     
     
        }
     
    }

    et j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    "C:\Program Files\Java\jdk-9.0.4\bin\java" "-Djava.library.path=C:\Users\Fred\Desktop\Programme R1bellu2B\dlls" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.5\lib\idea_rt.jar=54594: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
    java.lang.ExceptionInInitializerError
    Caused by: java.lang.NullPointerException
    	at java.base/java.util.Objects.requireNonNull(Objects.java:221)
    	at java.base/java.nio.file.Files.copy(Files.java:3039)
    	at r1bellu2b.norecoil.DllController.<init>(DllController.java:30)
    	at r1bellu2b.norecoil.Main.<clinit>(Main.java:38)
    Exception in thread "main" 
    Process finished with exit code 1


    j'ai isole la ligne qui pose probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Files.copy(inputStream, Paths.get(System.getProperty("user.dir"), "AutoHotkey.dll"));

    user.dir correspond a l'emplacement de mon dossier sous windows si je ne me trompe pas, normale que ca fasse une erreur

    J'ai modifie mais toujours l'erreur sur les deux ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Files.copy(inputStream, Paths.get(System.getProperty("user.home")+ "/Programme R1bellu2B" ,"AutoHotkey.dll"));
                System.setProperty("java.library.path", System.getProperty("user.home")+ "/Programme R1bellu2B/AutoHotkey.dll" );
    je doit me trompe sur les chemin d'acces je pense


    si je comprend bien le code :


    - On recupere la dll la (dossier ou il a la dll dans le jar)
    - On la charge dans un dossier (du projet)
    - on la lis a partir de la (le dossier dans l'application)

  15. #15
    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 : 55
    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
    Le dossier /resources/dll/ est-il bien à la racine de ton dossier src ? Avec le fichier AutoHotkey.dll dedans ?
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Oui il es bien place a cet endroit

  17. #17
    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 : 55
    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
    Pourtant l'exception que tu montres arrive si l'url est null, donc que la ressource n'est pas trouvée à l'endroit indiqué.

    [EDIT]Est-ce que tu as vérifié s'il était bien copié dans le dossier de classes (.class) ?
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

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


    Alors j'ai regarde dans le dossier classes


    Pour enfin reussir a debloque la situation, j'ai ajoute manuellement le dossier "resources"(avec son contenu) a la racine de celui ci.


    j'arrive de nouveau a execute mon programme en "run main" sous intelij et aussi en le compilant en .jar


    Je suis soumis au lancement a une nouvelle erreur mais qui n'empeche pas le lancement du programmes :

    code erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    "C:\Program Files\Java\jdk-9.0.4\bin\java" "-Djava.library.path=C:\Users\Fred\Desktop\Programme R1bellu2B\dlls" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.5\lib\idea_rt.jar=50028: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
    java.nio.file.NoSuchFileException: C:\Users\Fred\Programme R1bellu2B\dlls\AutoHotkey.dll
    	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
    	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:30)
    	at r1bellu2b.norecoil.Main.<clinit>(Main.java:38)

    le code qui va recupere la dll :

    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
    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;
     
    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")) {
               Files.copy(inputStream, Paths.get(System.getProperty("user.home")+ "/Programme R1bellu2B/dlls" ,"AutoHotkey.dll"));
                System.setProperty("java.library.path", System.getProperty("user.home")+ "src/hotkey/script.ahk" );
        } catch (IOException e) {
                e.printStackTrace();
            }
     
     
     
     
     
    /*
            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", 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")));
    */
     
     
     
        }
     
    }

  19. #19
    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 : 55
    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
    Le dossier "C:\Users\Fred\Programme R1bellu2B\dlls\" n'existe pas, donc il ne peut pas créer le fichier "C:\Users\Fred\Programme R1bellu2B\dlls\AutoHotkey.dll". Tu peux créer le dossier, juste avant de faire la copie, par exemple avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Files.createDirectories(Paths.get(System.getProperty("user.home"),"Programme R1bellu2B/dlls"));

    Par ailleurs, ça c'est n'importe quoi : System.setProperty("java.library.path", System.getProperty("user.home")+ "src/hotkey/script.ahk" );Si tu copies ta dll dans "C:\Users\Fred\Programme R1bellu2B\dlls\", il ne risque pas de la trouver ailleurs et puis "script.ahk, c'est un fichier n'est-ce-pas ? Le java.library.path est censé être un dossier (ou une liste de dossiers). La valeur donnée à la propriété java.library.path doit au moins contenir le dossier qui va contenir ta bibliothèque.
    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.

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

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 169
    Par défaut
    Le dossier "C:\Users\Fred\Programme R1bellu2B\dlls\" existe pourtant.



    Nom : screen.jpg
Affichages : 299
Taille : 739,1 Ko





    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2015, 08h19
  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, 11h21
  3. Réponses: 10
    Dernier message: 29/05/2007, 12h16
  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, 21h30
  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, 16h26

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