Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancer code JavaFX via Cron

Sujet résolu
    24 juin 2020 à 11:11:35

    Bonjour,

    Je veux lancer un script bash de façon périodique donc je l'ai mis dans un cron:

    Ce script bash va lancer un programme java.

    Ci-dessous le script

    #!/bin/bash
    cheminCode="/home/Dev/"
    
    
    cd $cheminCode
    touch essai.txt
    javac -cp /lib/jfxrt.jar monCode.java
    java -classpath monCode.class:/lib/jfxrt.jar:. monCode


    Quand je le lance depuis un terminal, pas de problème, le code java s'exécute bien (il traite des données et crée des répertoires).

    Mais quand je veux le lancer depuis le cron... plus rien.

    Enfin si, il crée bien le fichier "essai.txt" dans le répertoire où j'ai mis mon code mais ne lance apparemment pas le code java.

    Voici les lignes de créations de dossiers dans le code java:

    new File("/home/GRAPHS/"+"/"+monNom).mkdir();

    (Le dossier "monNom" est bien crée quand je lance le script en console.)

    Les droits sur les scripts sont bons, je les aient mis à 777 (oui ce n'est pas bien je sais :ninja:)

    Avec vous des pistes de réflexions/idées?

    En vous remerciant d'avance,

    Romain

    EDIT

    Je pense que le problème vient de JavaFX, vu que ce code est normalement destiné à créer des graphs via JavaFX.

    J'ai redirigé la sortie vers un fichier log et rien ne s'affiche donc il ne lance pas le code...

    -
    Edité par Romain29r 24 juin 2020 à 12:25:45

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2020 à 12:53:14

      Il faut recompiler chaque fois qu'on s'en sert ?
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2020 à 13:13:12

        Non pas forcément, juste quand le code change.

        Mais c'est le même problème, le code ne compile pas quand il est lancé via le cron :/

        En console tout fonctionne parfaitement pourtant.

        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2020 à 13:47:03

          Il y a sûrement, dans les logs du système, les messages d'erreur qui résultent de l'échec du lancement.

          Le code, il compile pas tout seul. Il est compilé, quand le compilateur s'exécute.

          Suspect habituel, le PATH utilisé par cron. Remède habituel, le configurer dans le script.

          -
          Edité par michelbillaud 24 juin 2020 à 13:49:24

          • Partager sur Facebook
          • Partager sur Twitter
            25 juin 2020 à 14:42:42

            Le problème c'est qu'il ne lance pas le code java qui est une application JavaFX.

            Or le code fonctionne bien quand il est lancé via un script en console

            -
            Edité par Romain29r 25 juin 2020 à 14:43:07

            • Partager sur Facebook
            • Partager sur Twitter
              25 juin 2020 à 15:26:13

              Oui tu nous l'as déjà dit qua ça marchait quand tu lançais le script dans la console.

              Et je reformule

              1. Quand tu travailles en console, ta variable PATH contient une liste de répertoires

              $ echo $PATH
              /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
              

              qui sert à trouver les exécutables java / javac / etc.

              Chez moi il est dans /bin/java, donc ça marche. Mais ça dépend comment on a installé java

              2. Quand un script est lancé par cron, le PATH peut être différent. Et si il n'y a pas le bon répertoire, ça marchera pas

              3. Le remède serait alors d'ajouter le bon répertoire dans PATH, au début du script, dans le genre

              #!/bin/bash
              
              export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin/:$PATH
              
              ...
              java -cp montruc.jar



              Autre point, si c'est une application graphique, où veux tu que ça s'affiche ?

              Mais pour savoir quel est le problème exactement, il faudrait regarder les logs. L'as-tu fait ?



              -
              Edité par michelbillaud 25 juin 2020 à 15:28:30

              • Partager sur Facebook
              • Partager sur Twitter
                25 juin 2020 à 15:36:28

                Bonjour,

                Le problème est résolu et il s'agissait bien d'un problème dû à JavaFX.

                Le Path était bon.

                C'est une interface graphique oui mais je n'affiche pas l'application, je m'en sers juste pour générer une image.

                Le problème était donc que cron n'arrivait pas à lancer cette application graphique (qui n'affiche rien).

                Il fallait donc rajouter "DISPLAY=':'0.0'" avant la commande CRON.

                -
                Edité par Romain29r 25 juin 2020 à 15:36:37

                • Partager sur Facebook
                • Partager sur Twitter

                Lancer code JavaFX via Cron

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown