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

JavaFX Discussion :

Indexer projets JavaFX dans une fenêtre


Sujet :

JavaFX

  1. #1
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut Indexer projets JavaFX dans une fenêtre
    Bonjour a vous,

    je cherche comment indexer les projets, exos, tests, exemples que j'ai fait ds 1 seule fenetre avec 1 bouton pr chaque projet qui executerait le dit projet.
    Et dc comment relier 2 projets totalement différents.

    je reference quoi?
    les Main, MainApp?
    les fichiers module-info
    autre chose.

    En vs remerciant,
    Bon we a vous
    grub

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Et re, fin des vacances, retour au turbin.

    Une analyse rapide permet de voir qu'il y a plusieurs problèmes bien distincts dans le projet de launcher que tu veux tenter de créer. Chacun devra être traiter separement de manière a bien isoler les couches et et divers services a effectuer dans ce soft :
    • Lister et parcourir une arborescence de répertoires et leur contenu
    • Découvrir et différencier ce qui est un projet JavaFX ou pas
    • Créer une GUI de manière dynamique pour afficher les infos et détails des projets et permettre de les lancer.
    • Lancer un projet soit de manière autonome (process externe) soit dans la même JVM que le launcher.


    La premiere grande question tu dois te poser est : veux-tu que ton exploration soit dynamique (on parcours les répertoire et on détecte au vol si tel ou tel répertoire contient un projet) ou statique (ton application dispose d'un fichier catalogue qui liste tous les projets, si tu rajoutes un projet, tu devras modifier le catalogue).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    slt a vous, slt a toi (désolé pr ta fin de vacances, (j'espere qu'elles ont été à la hauteur de tes attentes))

    En ce qui concerne le sujet du post,
    je vais etre gourmand et répondre "les 2 mon capitaine"

    J'attaque ce qui semble etre le + simple, ta seconde solution,

    Je dirai qu'il faut que je fasse 1 fichier txt avec
    1L (au moins) pr chaque projet que je souhaite referencer.
    Lecture du fichier
    A partir de là, questions
    - que faut il ecrire ds ce fichier txt?
    - Que faut il ecrire comme L ds le launcher? (lancer la methode main() du Main.java du projet indéxé?, autre?) (en utilisant forcement ce qui est ecrit ds le fichier txt)
    - comment executer cette L depuis la fenetre qui indexe les projets (avec 1 bouton ms qu'en est il de la methode associée au bouton?)

    Ta 1° solution qui necessite + d étapes
    1° etape, lister des dossiers, lire ces dossiers, lire des sous dossiers, verifier la presence de fichiers specifiques
    Ca a l'air d'etre du "simple code que je saurai faire ("sans trop de difficultés")

    2° etape,
    différencier les projets JavaFX
    Sachant que je construis mes projets toujours de la meme maniere:
    j'ajoute les 8 .jar fx depuis le modulepath
    Je dirai vite fait, comme ça que la lecture d'1 fichier .classpath ns renseigne ms je ne sais pas trop si c'est fiable (je ne vois pas non plus de raison pr ne pas appliquer cette methode, c'est 1 petit truc perso que je souhaite, dc...)

    3° etape:
    creer la GUI de maniere dynamique:
    1 variable qui stocke le nbre de projets
    1 boucle for
    pr chaque iteration, j'ajoute 1 bouton et son action
    ca signifie, ecriture ds 1 fichier (voir +)

    4° etape:
    je pense que le mx c'est le process externe
    et dc creat° d'1 Thread (ou d'1 couple Service + Task)

    je dirai qu'on peut regrouper etape01 et etape02

    Voilà a quoi je pense.
    Qu'en dis tu?

    PS: je dirai comme ca, qu'à l'utilisation, je n'ouvrirai pas plusieurs "projetx indexes" en meme temps. je lance 1 projet, je regarde ce qu'il fait
    - ça m'interesse, je ferme le projet indexé et le launcher, j'ouvre le projet visé ds l'IDE pr voir le code
    - ça m'interesse pas, je ferme le projet indexé et je passe au suivant

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Commençons par le commencement, on va faire une version statique.
    Pour le moment rien de JavaFX, c'est juste des bête opérations IO sans rapport avec la GUI.

    Citation Envoyé par grub_fr Voir le message
    Je dirai qu'il faut que je fasse 1 fichier txt avec
    1L (au moins) pr chaque projet que je souhaite referencer.
    Lecture du fichier
    A partir de là, questions
    - que faut il ecrire ds ce fichier txt?
    - Que faut il ecrire comme L ds le launcher? (lancer la methode main() du Main.java du projet indéxé?, autre?) (en utilisant forcement ce qui est ecrit ds le fichier txt)
    - comment executer cette L depuis la fenetre qui indexe les projets (avec 1 bouton ms qu'en est il de la methode associée au bouton?)
    Franchement, c'est toi le maître de ton projet, donc tu fais ce que tu veux. Dans mon cas, pour des listing statiques, souvent je fais un truc dans le genre :

    Fichier settings.properties :
    Code TXT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    projects=toto, tutu
    toto.title=Toto
    toto.description=Le projet Toto !
    toto.path=projects/toto
    tutu.title=Tutu
    tutu.description=Le projet Tutu !
    tutu.path=projects/tutu

    Ce fichier peut être charge via la méthode Properties.load(). Il suffit ensuite d'extraire la propriété projects et de découper (split()) la String retournées (séparateurs ',' et ' ').
    On obtient alors les ids de chaque projet et il devient alors super facile de reconstruire les infos dont ont a besoin en faisant <iddeprojet>+".title", etc.
    Et on peut rajouter d'autres infos qui peuvent être pertinente a afficher plus tard dans la GUI a volonté (ex: date de création, état fonctionnel/bug, etc).

    Mais ça c'est moi, tu peux aussi faire ta propre syntaxe maison avec le projet qui est décrit en une seule ligne.
    Et c'est juste une manière parmi une infinité d'autre de faire. Et ici c'est juste un fichier TXT, mais on aurai tout aussi bien pu faire ça en XML ou en JSON ou en n'importe quoi d'autre et c'est pas franchement plus compliqué...

    Ex, fichier settings.xml :

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <projects>
        <project>  
            <id>toto</id>
            <name>Toto</name>
            <Description>Le projet Toto !</Description>
            <path>projects/toto</path>
        </project>
        <project>
            <id>tutu</id>
            <name>Tutu</name>
            <Description>Le projet Tutu!</Description>
            <path>projects/tutu</path>
        </project>
    </projects>

    Et ça se charge facilement via SAX ou DOM (évidement je te donnerai des conseils si tu pars vers cette voie et que tu ne sais pas comment faire).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    Hello,

    Je suis parti sur ta soluce du fichier .properties
    Je mets les 2 methodes
    - charge le fichier
    - affiche les proprietes

    y'a le strict minimum, pas de verifs du fichier ni quoi que ce soit.

    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
     
        private Map<String,String> chargerProperties() throws Exception {
     
        	Map<String, String> sortedMap = new TreeMap<>();
     
            FileReader reader = new FileReader("./src/application/resource/settings.properties");
            Properties proprietes = new Properties();
            proprietes.load(reader);
     
            Enumeration keys = proprietes.propertyNames();
     
            while(keys.hasMoreElements()) {
                String key = (String)keys.nextElement();
                sortedMap.put(key,proprietes.getProperty(key));
            }
     
            reader.close();
     
            return sortedMap;
        }
     
    	// =======================================================
     
        //
        private void afficherProprietes(Map<String,String> p_proprietes) {
            for(String key:p_proprietes.keySet()) {
                System.out.println(key + ":" + p_proprietes.get(key));
            }
        }
     
    	// =======================================================
    ca affiche bien,
    si je modifie le fichier .properties, tt est bien repercuté

    Dc maintenant si j'ai bien compris,
    je dois
    - denombrer les projets (découper la Ligne projetcs=toto, tutu) pr obtenir le nbre et les id des projets
    - lire chaque L du fichier et reconstruire les infos. Reconstruire les infos..? les rassembler ds 1 tableau (1 tableau pr chaque projet j'entends), en faire 1 classe (ou Bean)?

    Bon we a toi ( a vous)

    PS: j'ai 1 warning sur l'enumeration, car je ne sais pas quoi mettre sur le parametre de type

  6. #6
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    Bon je pense etre arrivé a ce que je voulais.
    je me suis battu avec des Regex, des boucles imbriquées, des ArrayList de ArrayList créees dynamiquement (ou pas)... pas triste.
    Au final j'obtiens 1 ArrayList<ArrayList<String>>.
    les ArrayList<String> st des listes, 1 pr chaque projet et qui contiennent les propriétés de chaque projet.
    ds le fichier settings.properties, je peux ajouter autant de projets que je le souhaite et autant de proprietes que je le souhaite.
    il faut que le nbre de proprietes soit identique pr tous les projets.
    j'ai pas ecrit les verifs, je m'y collerai plus tard.
    Alors maintenant, la question c'est de savoir ce que je dois mettre ds la propriete path?
    Tu me dis ou je cherche?
    Pas ce soir, j'en ai marre.

    a+

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    En fait convertir en une Map<String,String> sert pas à grand chose puisque la class Properties est justement un dérivé de Hashtable; mais comme c'est une classe qui date du JDK 1.0 et que les générique existaient pas à l'époque ils ont juste rajouté des méthodes pour retourner des String au lieu d'Object.

    Pour path ben ça peut contenir le chemin d'accès relatif au répertoire de chacun des projets. On peut supposer que ton fichier .properties se trouve dans le répertoire parent contenant tous les projets, donc les valeurs sont des chemins relatifs pour chacun de ces emplacements.

    Je te posterai un peu plus de code d'ici qq heures.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Voici ce que j'ai fait de mon coté :

    Fichier settings.properties :
    Code TXT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    projects=toto, tutu
    toto.title=Toto
    toto.description=This is the Toto project!
    toto.path=projects/toto
    tutu.title=Tutu
    tutu.description=This is the Tutu project!
    tutu.path=projects/tutu

    J'ai créé une classe Project qui va conserver les infos quand on va arriver du cote de la GUI :
    Fichier Record.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package test.projectbrowser;
     
    /**
     * Holds project info.
     * @param id The project's unique ID.
     * @param title The project's human-readable title.
     * @param description The project's human-readable description.
     * @param path The path to the project.
     */
    record Project(String id, String title, String description, String path) {
    }
    Et je m'occupe du chargement du fichier. Ici aussi j'ai fait a minima. On notera la presence d'une methode validateProject() qui pour le moment retourne juste true mais qui peut servir dans le futur a plus de tests pour vérifier que le projet est correct pour être lancé (répertoire présent, manque pas de fichier, etc.).
    Fichier ProjectUtils
    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
    package test.projectbrowser;
     
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.Arrays;
    import java.util.Properties;
     
    /**
     * Project utilities.
     */
    enum ProjectUtils {
        INSTANCE;
        private static final String SETTINGS = "settings.properties";
     
        /**
         * Load project descriptors from settings file.
         *
         * @return A [@code Project[]} instance, never {@code null}.
         * @throws IOException          In case of IO error.
         * @throws NullPointerException If missing projects definition.
         */
        public Project[] loadProjects() throws IOException, NullPointerException {
            final var settings = new Properties();
            try (final var input = Files.newInputStream(Paths.get(SETTINGS))) {
                settings.load(input);
            }
            final var projects = settings.getProperty("projects");
            final var ids = projects.split(", "); // Pas besoin de se casser la tete avec une regexp compliquee.
            return Arrays.stream(ids)
                    .map(id -> idToProject(settings, id))// Extraire le projet de la map.
                    .filter(this::validateProject)// Valider le projet.
                    .toArray(Project[]::new);
        }
     
        /**
         * Creates project info from ID.
         * @param settings The settings.
         * @param id The project id.
         * @return A {@code Project} instance, never {@code null}.
         */
        private Project idToProject(final Properties settings, final String id) {
            final var title = settings.getProperty(id + ".title");
            final var description = settings.getProperty(id + ".description");
            final var path = settings.getProperty(id + ".path");
            return new Project(id, title, description, path);
        }
     
        /**
         * Validate project.
         * @param project The project to test.
         * @return Returns {@code true} if project is valid, {@code false} otherwise.
         */
        private boolean validateProject(final Project project) {
            // TODO: faire plus de tests.
            return true;
        }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    slt,

    J'arrive a faire tourner ton code.
    tu fais en - de 100L et 3h ce que je fais en 600L et 3j complets... (j'ai encore une bonne marge de progress°).

    Apres 1 peu de documentation, j'ai essayé de lancer 1 projet simple que du java, 1 HelloWorld en console.
    Il semblerait que ce soit le fichier .class qu'il faille executer (ds le /bin)

    il semblerait qu'il y ait 2 (au moins) manieres de faire
    - par URLClassLoader
    et
    - par Class.forName();

    Evidemment, aucune des 2 ne fonctionne.

    Les exemples que je vois st beaucoup pr des fichiers ds le meme package.
    certains preconisent la creat° d'1 .jar a mettre ds le modulepath.

    Je ne suis meme pas sur de mes chemins. Soit il faut des ".", soit des "/"
    on charge avec un "file://" ou pas
    Bref je suis pas plus avancé. J'ai essayé des choses que je poste.
    c'est 1 methode executée au clic bouton

    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
     
    @FXML
    	private void executerProjet01() {
     
    		//
    		System.out.println("methode executerProjet01()");
    		System.out.println("");
     
    		//
    		URL classUrl;
     
            try {
    			// classUrl = new URL("file:///media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/HelloWorld/bin/org/example/");
            	classUrl = new URL("file:///media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/HelloWorld/bin/org/example/");
    			URL[] classUrls = { classUrl };
    	        URLClassLoader ucl = new URLClassLoader(classUrls);
     
    	        try {
    				ucl.close();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
     
    	        try {
    				Class<?> c = ucl.loadClass("org/example/HelloWorld.class");
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    				System.out.println("Class HelloWorld.class not found!");
     
    			}
     
            } catch (MalformedURLException e) {
    			e.printStackTrace();
    		}
     
     
    	}
    ou encore
    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
     
    @FXML
    	private void executerProjet() {
     
    		System.out.println("methode executerProjet()");
    		System.out.println("");
     
    		String CLASS_TO_LOAD = "file:///media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/HelloWorld/bin/org/example/HelloWorld.Class";
     
    		try {
                Class<?> newClass = Class.forName(CLASS_TO_LOAD);
     
                System.out.println("Class " + newClass + " found successfully!");
     
          } catch (ClassNotFoundException ex) {
     
                ex.printStackTrace();
     
                System.out.println("Class " + CLASS_TO_LOAD + " not found!");
     
          } catch (Throwable any) {                           
                System.out.println("Unexpected error! " + any);
          }
     
    	}
    les 2 me retournent 1 ClassNotFoundException, dc je pense que les chemins ne st pas bons

    Je vais continuer a chercher ms des explications seraient les bienvenues.
    Je vais essayer les chemins relatifs.

    a+
    grub

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    C'est probablement plus intéressant pour diverses raisons de lancer le projet dans un processus externe (voir Process, ProcessBuilder) plutot que de chercher a le charger dans la même JVM que celle qui exécute actuellement l'UI de navigation des projets. Ça permet entre autres :

    • D'utiliser des JVMs de version différentes si besoin
    • D’éviter d'avoir des bibliothèques incompatibles entre elles
    • D’éviter que le fait de fermer la fenêtre du projet termine l'application de navigation.



    Par exemple, comment lancer java --version et avoir le résultat qui s'affiche dans la console du programme. Attention, ceci est une tache qui doit être lancée dans un thread/service différent de celui de l'UI pour éviter de bloquer l'interface graphique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    final var settings = new Properties();
            try (final var input = Files.newInputStream(Paths.get(SETTINGS))) {
                settings.load(input);
            }
            final var javaHomeSystem = System.getenv("JAVA_HOME");
            final var javaHomeUser = settings.getProperty("java.home");
            final var javaHome = (Objects.nonNull(javaHomeUser) ? javaHomeUser : javaHomeSystem).trim();
            final var javaPath = javaHome + "/bin/java";
            return new ProcessBuilder(javaPath, "--version")
                    .inheritIO()
                    .start()
                    .waitFor();
    La valeur retournée ici est le code d'erreur de sortie du programme (0 si tout se passe bien, autre chose en cas d'erreur). Ici je récupère la valeur de la variable environnement JAVA_HOME ainsi que de la valeur java.home que j'ai rajoutée dans le fichier de configuration, pour trouver ou se trouve le JDK.

    L’idée est donc d'arriver a exécuter quelque chose dans le genre java <options qui vont bien> -jar <fichier jar du projet> ou java <options qui vont bien> <classe principale du projet>, ce qui impliquera sans doute de rajouter des infos sur les description du projet. Parmi les options qui vont bien, il faudra penser :
    • Au ClassPath
    • Au ModulePath
    • Aux options de la JVM
    • Aux options du projet
    • Etc.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    J'arrive a lancer le programme HelloWorld qui n'etait que du Java.
    Avec un HelloWorld JavaFX j'avais (parce que cela a evolué) des erreurs du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    > Task :compileJava
    C:\<username>\Devel\Java\test\gluon\Ensemble-2\src\main\java\ensemble\control\BendingPages.java:50: error: cannot find symbol
    import javafx.scene.shape.PathBuilder;
                             ^
      symbol:   class PathBuilder
      location: package javafx.scene.shape
    C:\<username>\Devel\Java\test\gluon\Ensemble-2\src\main\java\ensemble\HomePage.java:51: error: cannot find symbol
    import javafx.scene.effect.BlendBuilder;
                              ^
      symbol:   class BlendBuilder
      location: package javafx.scene.effect
    C:\<username>\Devel\Java\test\gluon\Ensemble-2\src\main\java\ensemble\HomePage.java:53: error: cannot find symbol
    import javafx.scene.effect.DropShadowBuilder;
    C'est juste 1 exemple que j'ai tiré de l'un de tes messages de 2018.
    Apparemment ce sont des erreurs car le jdk (j'etais sous openJDK 17 ou 1.17, je m'y retrouve pas avec les denominations) ne trouve pas les builders (... qu'est ce qu'un 1 builder..?)

    j'ai installé le jdk d'Oracle 18 et changé la JRE, idem, le meme type d'erreur
    j'ai installé le jdk Liberica et changé la JRE ds eclipse et maintenant j'ai cô erreur (Liberica et Zulu prennent openjfx nativement d'apres ce que j'ai compris, pas openjdk ni le jdk oracle)
    ClassNotFoundException, bref je ne fais que donner des nouvelles. je continue a chercher.

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par grub_fr Voir le message
    J'arrive a lancer le programme HelloWorld qui n'etait que du Java.
    Apparemment ce sont des erreurs car le jdk (j'etais sous openJDK 17 ou 1.17, je m'y retrouve pas avec les denominations) ne trouve pas les builders (... qu'est ce qu'un 1 builder..?)
    C'était des classes dédiées à la construction d'objet. Il s'agissait de l'application du patron de conception Monteur. Elles ont été retirées pour divers raisons entres autres le fait que ça soit pas compatible avec les modules du JDK 9 ou encore le fait que la compatibilité binaire n'était pas possible d'être maintenue entre divers versions du JDK. Ils avaient aussi invoqué la réduction de l'emprunte mémoire à l'époque.

    Donc de toutes manières ces classes n'existent plus dans un JDK moderne et le code de l'époque a besoin d'être réécrit pour fonctionner sans builder.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    Slt j'espere que vs allez bien,

    Bon ben je n'avance pas

    Alors le but c'est au clic bouton, j'execute l'indexeur de projets (c'est le projet A) qui execute 1 second projet JavaFX (projet B) (pr le moment, je suis sur 1 projet bien précis, histoire de trouver la syntaxe qui fonctionne)
    Le projet B est une fenetre JavaFX avec 1 btn,on clique, la date apparait ds le TextField au-dessous, rien de plus)
    Le projet B est constitué de
    - 1 fichier Main.java
    - 1 fichier .fxml
    - 1 fichier Controller.java
    - 1 fichier module-infos.java
    Le projet B s'execute correctement.

    je mets le code de la methode qui est éxecutée qd on clique sur le bouton du projet A censé executer le projet B, puis l'erreur puis j'explique (en vrac parce que j'en ai fait) des manips.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
    // methode 07
    	@FXML
    	private void executerFichierJava02() {
     
    		//
    		System.out.println("");
    		System.out.println("method: executerFichierJava02()");
    		System.out.println("create 1 Service and 1 Task");
    		System.out.println("return 1 ProcessBuilder to");
    		System.out.println("execute 1 Java class (from project JavaFX_Test02_Desvstory)");
     
    		final Service<Integer> service01 = new Service<Integer>() {
     
    			// --- step 03, override createTask() method
    			@Override
    			protected Task<Integer> createTask() {
     
    				return new Task<Integer>() {
     
    					// --- step 04, override call() method
    					@Override
    					protected Integer call() throws Exception {
     
    						// Java link: /usr/lib/jvm/java-17-openjdk-amd64/bin/java
     
    						// JRE java-17-openJDK
     
    						/*
    						try {
    							// Class.forName("applicationShowDate.Main.java");
    							// Class.forName("/media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test02_Desvstory/src/applicationShowDate/Main.java");
    						}
    						catch (ClassNotFoundException cnfe) {
    						    cnfe.printStackTrace();
    						}
    						*/
     
    						// compilation: 14 errors
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar\" --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web, --add-modules=javafx-swt.jar", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar\" --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac -cp /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.controls.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.base.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.fxml.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.graphics.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.media.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.swing.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.web", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs\" --add-modules=javafx.controls --add-modules=javafx.base --add-modules=javafx.fxml --add-modules=javafx.graphics --add-modules=javafx.media --add-modules=javafx.swing --add-modules=javafx.web", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs --add-modules=javafx.controls --add-modules=javafx.base --add-modules=javafx.fxml --add-modules=javafx.graphics --add-modules=javafx.media --add-modules=javafx.swing --add-modules=javafx.web, --add-modules=javafx-swt", "Main.java");
     
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs --add-modules javafx.controls,javafx.base,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web,javafx-swt", "Main.java");
     
    						// apres ajout des javafx-sdk-18.0.1 ds le rep /usr/lib/jvm/java-17-openjdk-amd64/lib/
    						// service 01, failed
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml",  "Main.java");
     
    						// compilation: 14 errors
    						ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java", "Main.java");
     
    						//
    						// process01.directory(new File("/media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test02_Desvstory/src/applicationShowDate/"));
     
    						//
    						process01.directory(new File("../JavaFX_Test02_Desvstory/src/applicationShowDate/"));
     
    						//
    						return process01
    				                .inheritIO()
    				                .start()
    				                .waitFor();
     
    					}
     
    				};
     
    			}
     
    		};
     
    		// --------------------------------------------------------
     
    		//
    		// 2° possibilité, en utilisant des callbacks
    		service01.setOnReady(event -> {
    			System.out.println("par le callback, service 01 ready");
     
    		});
    		service01.setOnScheduled(event -> {
    			System.out.println("par le callback, service 01 scheduled");
    		});
    		service01.setOnRunning(event -> {
    			System.out.println("par le callback, service 01 running...");
    		});
    		service01.setOnSucceeded(event -> {
    			System.out.println("par le callback, service 01, etat, success");
    		});
    		service01.setOnFailed(event -> {
    			System.out.println("par le callback, service 01, etat, failed");
    		});
    		service01.setOnCancelled(event -> {
    			System.out.println("par le callback, service 01, etat, cancelled");
    		});
     
    		// --------------------------------------------------------
     
    		// demarrer l'instance de Service
    		// la variable portée class
    		// prend la valeur de la variable portée locale
    		serviceB = service01;
     
    		// on demarre l'instance service de Service
            serviceB.start();		
     
    	}
    dc je crée 1 Service + Task et je verifie la bonne execution du Service. C'est l'idée de départ.
    Le Service et la Task dvent executer le projet B.
    Les commentaires montrent a peu prés ttes les syntaxes que j'ai essayé
    J'ai essayé avec l'OpenJDK17
    le Liberica_full
    le JDK18 d'Oracle
    j'ai essayé de changer les JREs
    d'apres ce que j'ai sur eclipse les JREs st:
    - /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar
    - /usr/lib/jvm/jdk18/lib/jrt-fs.jar
    - /usr/lib/jvm/liberica_full_JDK18/lib/jrt-fs.jar
    (pas important ms bon..., Je pense que le contenu des 3 .jar est identique, ils font le meme poids (je suis pas allé les décortiquer))

    Depuis le debut les lib du JavaFXSDK st ds les 2 projets (JavaFX SDK 18.0.1)
    j'ai essayé d'ajouter le projet B au ClassPath du projet A (et sans doute aussi au ModulePath)
    Je viens d'ajouter les lib du JavaFXSDK 18.0.1 aux libs de /usr/lib/jvm/openJDK17/lib (bien que je pense que cela ne changera rien)
    j'ai essaye d'importer le projet B ds le projet A
    je viens d'essayer les arguments ds la JVM (par le biais d'eclipse)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/javafx-sdk-18.0.1/lib --add-modules javafx.base,javafx.controls,javafx.fxml
    J'ai essayé d'autres trucs dt je ne me rappelle pas
    Bref, je pense avoir essayé beaucoup de choses, trucs, et machins, sauf celui qui va bien

    l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    method: executerFichierJava02()
    create 1 Service and 1 Task
    return 1 ProcessBuilder to
    execute 1 Java class (from project JavaFX_Test02_Desvstory)
    par le callback, service 01 scheduled
    par le callback, service 01 running...
    Main.java:3: error: package javafx.application does not exist
    import javafx.application.Application;
                             ^
    Main.java:4: error: package javafx.fxml does not exist
    import javafx.fxml.FXMLLoader;
                      ^
    Main.java:5: error: package javafx.stage does not exist
    import javafx.stage.Stage;
                       ^
    Main.java:6: error: package javafx.scene does not exist
    import javafx.scene.Parent;
                       ^
    Main.java:7: error: package javafx.scene does not exist
    import javafx.scene.Scene;
                       ^
    Main.java:8: error: package javafx.scene.layout does not exist
    import javafx.scene.layout.BorderPane;
                              ^
    Main.java:11: error: cannot find symbol
    public class Main extends Application {
                              ^
      symbol: class Application
    Main.java:14: error: cannot find symbol
        public void start(Stage primaryStage) {
                          ^
      symbol:   class Stage
      location: class Main
    Main.java:13: error: method does not override or implement a method from a supertype
    	@Override
    	^
    Main.java:17: error: cannot find symbol
                Parent root = FXMLLoader.load(getClass().getResource("/applicationShowDate/fenetrePrincipale.fxml"));
                ^
      symbol:   class Parent
      location: class Main
    Main.java:17: error: cannot find symbol
                Parent root = FXMLLoader.load(getClass().getResource("/applicationShowDate/fenetrePrincipale.fxml"));
                              ^
      symbol:   variable FXMLLoader
      location: class Main
    Main.java:17: error: cannot find symbol
                Parent root = FXMLLoader.load(getClass().getResource("/applicationShowDate/fenetrePrincipale.fxml"));
                                              ^
      symbol:   method getClass()
      location: class Main
    Main.java:24: error: cannot find symbol
                primaryStage.setScene(new Scene(root));
                                          ^
      symbol:   class Scene
      location: class Main
    Main.java:33: error: cannot find symbol
    		launch(args);
    		^
      symbol:   method launch(String[])
      location: class Main
    14 errors
    error: compilation failed
    par le callback, service 01, etat, success
    Je dois essayer le coup des fichiers .mods

    j'ai pas essayé le coup des .jar (franchement si je peux eviter de compiler mes projets en .jar, c'est pas plus mal, en + j'en ai qques 1 et c'est 1 source supplémentaire d'erreurs).

    mon Java_Home:
    >>> $ echo $JAVA_HOME
    /usr/lib/jvm/java-17-openjdk-amd64/

    Cô dit précedemment, il y a beaucoup de sources d'erreurs
    - la syntaxe
    import ds le ModulePath et/ou ds le ClassPath
    syntaxe des imports avec les extensions des fichiers .jar (ou pas), import des modules avec le signe "=" (ou pas), j'ai meme vu des imports de modules avec des ":" et sans doute d'autres que j'ai zappé.
    - le fait d'avoir 1 projet modulaire (ou pas)

    Je suis allé voir
    https://openjfx.io/openjfx-docs/#IDE-Eclipse

    J'ai aussi posé la question sur Stack ms a ma derniere visite, il n'y avait pas de réponse...

    Je vais aller voir la FAQ pr essayer de savoir pourquoi le Service 01 est failed qd j'importe les modules, il me semble qu'on peut afficher la raison du failed.

    PS:
    je mets le code des 2 fichiers module-infos.java

    - celui du projet A l'indexeur de projets)
    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
     
    module JavaFX_Test29_Threads_Services_Processes {
    	requires javafx.controls;
    	requires javafx.fxml;
    	requires javafx.base;
    	requires javafx.graphics;
    	requires javafx.swing;
     
    	requires java.sql;
    	requires java.sql.rowset;
     
    	exports application;
    	opens application.view to javafx.graphics, javafx.fxml;
    	opens application.controller to javafx.graphics, javafx.fxml, javafx.controls, javafx.base;
    	// opens application.UtilsDB to javafx.graphics, javafx.fxml;
    	// opens application.DAO to javafx.graphics, javafx.fxml;
    	// opens application.UtilsGetImages to javafx.graphics, javafx.fxml;
    	opens application.model to javafx.graphics, javafx.fxml, javafx.base;
    	// opens application.resource to javafx.graphics, javafx.fxml, javafx.base;
    }
    - celui du projet B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    module JavaFX_Test02_Desvstory {
    	requires javafx.controls;
    	requires javafx.fxml;
    	requires javafx.base;
    	requires javafx.graphics;
    	requires javafx.swing;
     
    	exports applicationShowDate;
    	opens applicationShowDate to javafx.graphics, javafx.fxml, javafx.base;
    }
    Voilà, si vous (ou tu, Bouyé) avez (as) des idées, de l'aide, ms SVP pas de "continue de chercher"

    a+
    grub_fr

  14. #14
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Les fichiers jmods sont nécessaires uniquement si tu te lances dans une compilation native donc ce n'est pas nécessaire dans un tel environnement.

    Il ne faut pas oublier que la ligne de commande que tu tentes s’exécuter est la même que si tu lançais le projet a la main dans un shell. Donc le mieux a faire est déjà de tenter de le lancer manuellement dans bash et ensuite de porter la chose vers le process. En gros ce que fais ton IDE quand tu demandes d’exécuter un projet déjà compilé.

    Parmi les choses a vérifier lors de l’exécution via Java :
    • Le fait d’être dans le bon répertoire de travail pour lancer la commande notamment si on utilise des chemins relatifs.
    • Qu'il y a pas des variables d'environnement spéciales ou des settings particuliers présents dans le shell mais qui seraient absents lors d'une exécution dans Java.


    L'erreur que tu as semble indiquer que tu as effectivement des soucis avec le Classpath ou le Modulepath. Je suis sous Windows et j'ai pas beaucoup teste Liberica (car il y avait des soucis étant donne que leurs binaires étaient pas signes. Pour le moment je bosse avec l'OpenJDK + les binaires de Gluon.

    EDIT - petite installation d'une VM Ubuntu 22 client sur VirtualBox avec installation de Liberica 18-full et du dernier Intellij IDEA puis création d'un projet basique JavaFX. L'IDE lance la ligne de commande suivante :

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    java -p /home/fabriceb/Devel/jdk-18/_0001_test/out/production/_0001_test -m test/test.Main

    Avec :
    • JAVA_HOME contient /home/fabriceb/Downloads/jdk-18.0.2-full/, l'endroit ou j'ai désarchivé Liberica 18-full
    • $JAVA_HOME/bin dans le PATH
    • /home/fabriceb/Devel/jdk-18/_0001_test/out/production/_0001_test l'endroit ou IDEA a mis les classes compilées
    • test/test.Main :
      • test le nom du module de mon projet
      • test.Main le package + classe principale


    En gros, cette ligne de commande permet de lancer le projet depuis n'importe ou. Pas besoin de spécifier le MODULE_PATH ici puisque JavaFX est inclus dans Liberica 18-full.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  15. #15
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    slt,

    TU PEUX ALLER LIRE LA DERNIERE SECTION, C'EST 1 TRUC QUI VIENT D'ARRIVER
    (le post a été rédigé sous editeur de texte de maniere chronolohique pr etre précis)

    je vais etre lourdaud:
    j'ai 3 questions au niveau de ta L de code

    01: /home/fabriceb/Devel/jdk-18/_0001_test/out/production/_0001_test l'endroit ou IDEA a mis les classes compilées
    les classes compilées..? tu parles du (je dis "du" car etant donné la simplicité du projet, je n'ai qu'1 seul fichier) fichier .class, celui qui se trouve ds le repertoire /bin du projet?

    02: le nom du module de mon projet
    je px trouver cette information en ouvrant le fichier module-infos.java, c'est la 1° L, ok?

    03: le package + la classe principale
    j'ouvre l'explorateur de projets, je cherche le package ou se trouve le fichier qui sert de point d'entrée au programme (ds mon cas: Main.java)

    pr le moment, je pars du principe que c'est oui aux 3 questions

    je suis passé sous Liberica

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $JAVA_HOME
    /usr/lib/jvm/liberica_full_JDK18/
    l'endroit ou j'ai desarchivé Liberica 18 full

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $PATH
    /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/sambano/Documents/scripts_bash:.local/bin:/home/sambano/Documents/scripts_bash:.local/bin:/home/sambano/Documents/scripts_bash:.local/bin:/home/sambano/Documents/scripts_bash:.local/bin:/home/sambano/Documents/scripts_bash:.local/bin:/home/sambano/Documents/scripts_bash:.local/bin:/home/sambano/Documents/scripts_bash:.local/bin:/usr/lib/jvm/liberica_full_JDK18/bin
    j'ai bien ajouté "/usr/lib/jvm/liberica_full_JDK18/bin" au PATH (de l'utilisateur, pas du systeme ms c'est bon)

    j'essaye de lancer depuis le Terminal

    le repertoire ds lequel je me trouve au moment de lancer les commandes:
    /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/application

    le projet que j'essaye de lancer est 1 simple fenetre JavaFX vide
    la classe compilée (si on parle bien de la meme chose) se trouve
    /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application/Main.class

    - le nom du package ds lequel se trouve le point d'entrée du programme: application
    - le nom du fichier de la classe: Main.java
    - le nom de la classe: Main
    - le nom du module: JavaFX_Test01_Hello_Devstory

    les commandes essayées et leur retour

    01
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    02
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application JavaFX_Test01_Hello_Devstory/application.Main
    Erreur : impossible de trouver ou de charger la classe principale .media.sambano.home_HDD_EXTERNE.Documents.java.workspace_eclipse.JavaFX_Test01_Hello_Devstory.bin.application
    Causé par : java.lang.ClassNotFoundException: /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application
    Il faut bien les parametres -p et -m

    03
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java --module-path /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application --module JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    essai avec les parametres --module-path et --module

    04
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application -m /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module  not found
    Il ne trouve plus le nom du module, abandon de la syntaxe

    05
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/bin/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    06
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java  JavaFX_Test01_Hello_Devstory/src/application  JavaFX_Test01_Hello_Devstory/application.Main
    Erreur : impossible de trouver ou de charger la classe principale JavaFX_Test01_Hello_Devstory.src.application
    Causé par : java.lang.ClassNotFoundException: JavaFX_Test01_Hello_Devstory.src.application
    07
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/src/application  JavaFX_Test01_Hello_Devstory/application.Main
    Erreur : impossible de trouver ou de charger la classe principale JavaFX_Test01_Hello_Devstory.application.Main
    Causé par : java.lang.ClassNotFoundException: JavaFX_Test01_Hello_Devstory.application.Main
    08
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/src/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    09
    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
     
    java --module-path /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/application/Main.java 
    Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: application.Main
            at javafx.graphics/javafx.application.Application.launch(Application.java:314)
            at application.Main.main(Main.java:24)
    Caused by: java.lang.ClassNotFoundException: application.Main
            at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
            at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
            at java.base/java.lang.Class.forName0(Native Method)
            at java.base/java.lang.Class.forName(Class.java:488)
            at java.base/java.lang.Class.forName(Class.java:467)
            at javafx.graphics/javafx.application.Application.launch(Application.java:302)
            at application.Main.main(Main.java:24)
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
            at java.base/java.lang.reflect.Method.invoke(Method.java:577)
            at jdk.compiler/com.sun.tools.javac.launcher.Main.execute(Main.java:421)
            at jdk.compiler/com.sun.tools.javac.launcher.Main.run(Main.java:192)
            at jdk.compiler/com.sun.tools.javac.launcher.Main.main(Main.java:132)
    10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/src/application/Main.java 
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    Commande identique à la précédente ms
    - je remplace --module-path par -p
    - modules par -m
    - ajout des modules controls et fxml
    je n'ai plus la meme erreur

    ---------------------------------------------

    je remonte de 2 repertoires pr etre ds
    /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory
    je lance les commandes precedentes

    01-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    02-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application JavaFX_Test01_Hello_Devstory/application.Main
    Erreur : impossible de trouver ou de charger la classe principale .media.sambano.home_HDD_EXTERNE.Documents.java.workspace_eclipse.JavaFX_Test01_Hello_Devstory.bin.application
    Causé par : java.lang.ClassNotFoundException: /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application
    meme remarque que 02, il faut les parametres -p et -m

    03-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java --module-path /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application --module JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    04-A: Abandon de la syntaxe au 04

    05-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/bin/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    06-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java  JavaFX_Test01_Hello_Devstory/src/application  JavaFX_Test01_Hello_Devstory/application.Main
    Erreur : impossible de trouver ou de charger la classe principale JavaFX_Test01_Hello_Devstory.src.application
    Causé par : java.lang.ClassNotFoundException: JavaFX_Test01_Hello_Devstory.src.application
    07-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/src/application  JavaFX_Test01_Hello_Devstory/application.Main
    Erreur : impossible de trouver ou de charger la classe principale JavaFX_Test01_Hello_Devstory.application.Main
    Causé par : java.lang.ClassNotFoundException: JavaFX_Test01_Hello_Devstory.application.Main
    08-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/src/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    09-A
    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
     
    java --module-path /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/application/Main.java
    Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: application.Main
            at javafx.graphics/javafx.application.Application.launch(Application.java:314)
            at application.Main.main(Main.java:24)
    Caused by: java.lang.ClassNotFoundException: application.Main
            at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
            at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
            at java.base/java.lang.Class.forName0(Native Method)
            at java.base/java.lang.Class.forName(Class.java:488)
            at java.base/java.lang.Class.forName(Class.java:467)
            at javafx.graphics/javafx.application.Application.launch(Application.java:302)
            at application.Main.main(Main.java:24)
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
            at java.base/java.lang.reflect.Method.invoke(Method.java:577)
            at jdk.compiler/com.sun.tools.javac.launcher.Main.execute(Main.java:421)
            at jdk.compiler/com.sun.tools.javac.launcher.Main.run(Main.java:192)
            at jdk.compiler/com.sun.tools.javac.launcher.Main.main(Main.java:132)
    10-A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/src/application/Main.java
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    11-A (11 a tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application/Main.java
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    12-A (12 a tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    13-A (13 a tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    14-A (14 a tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/application --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    --------------------------------------------------------------------------------------------------

    ajout de l'instruction: exports application ds le fichier module-infos.java du projet

    copies des commandes A (uniquement les commandes avec parametres -p et -m)
    en etant ds le repertoire
    /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory

    01-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    05-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/bin/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    08-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p JavaFX_Test01_Hello_Devstory/src/application -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    10-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/src/application/Main.java
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    11-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application/Main.java
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    12-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    13-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/bin/application --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    14-B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java -p /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/application --add-modules javafx.controls,javafx.fxml -m JavaFX_Test01_Hello_Devstory/application.Main
    Error occurred during initialization of boot layer
    java.lang.module.FindException: Module JavaFX_Test01_Hello_Devstory not found
    -----------------------------------------------------------------------------------

    je viens d'aller sur eclipse et ouvert le projet.
    ds le buildpath, je vais a Module Dependencies
    ds la colonne de gauche, je selectionne JavaFX_Test01_Hello_Devstory
    je clique sur le bouton Read Module à droite
    il affiche les Declared Details of JavaFX_Test01_Hello_Devstory
    puis au bout de qques secondes j'ai une fenetre problem occurred
    qui me dit qu'il ne trouve pas le fichier '/JavaFX_Test01_Hello_Devstory' (ds tout le workspace)
    ????
    ben j'ai pas de fichier JavaFX_Test01_Hello_Devstory,
    prkoi j'en aurai 1?
    j'ai cree 1 projet avec ce nom (dc c'est 1 dossier avec le src, le bin et les autres reps)
    a la creation du projet, j'ai demandé qu'il cree 1 fichier module-infos.java
    ds ce fichier qu'eclipse a crée, la 1° L est
    module JavaFX_Test01_Hello_Devstory {
    j'ai crée 1 package application
    dedans j'ai crée 1 fichier Main.java
    dedans j'ai crée 1 class Main

    Dc l'erreur vient de là???, manque ce fichier...

    Comment je le crée? ou je le crée? qu'est ce que j'y mets dedans? Pourquoi eclipse l'a pas crée? ca va etre cô ca avec ts mes projets?
    Si tu as (ou qqu'un sous eclipse) ce fichier, est il possible de le publier et de me dire ou il est placé SVP

    J'arrete là pr aujourd'hui.

    [EDIT]
    j'ouvre le projet JavaFX_Test07
    fais les memes manips, il me sort la meme erreur... a propos de JavaFX_Test01_Hello_Devstory...
    pfff
    [/EDIT]

    a+ (merci)
    grub

  16. #16
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    beaucoup

    trop

    d'info

    qui

    servent

    a

    rien

    Retour aux bases :
    • Ubuntu 22
    • Liberica JDK 18 full
    • bash
    • un éditeur de texte
    • variable JAVA_HOME positionnée
    • variable PATH positionnée


    Compiler et lancer le programme :
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  17. #17
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Pour plus d'info sur les flags : https://docs.oracle.com/en/java/java.../man/java.html

    -m or --module module[/mainclass]
    Executes the main class in a module specified by mainclass if it is given, or, if it is not given, the value in the module. In other words, mainclass can be used when it is not specified by the module, or to override the value when it is specified.

    --module-path modulepath... or -p modulepath
    A semicolon ( ; ) separated list of directories in which each directory is a directory of modules.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  18. #18
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    dernier msg avt we..?

    Je viens d'essayer
    1° methode: echec
    2° methode: succes

    1° methode:
    mon systeme debian
    mon installation Liberica JDK 18 full (installation par désarchivage du .tar.gz)
    bash
    editeur de texte
    variable JAVA_HOME positionnée
    variable PATH positionnée

    projet nommé "test"
    avec ta structure
    avec ton code

    erreur au retour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    javac -d out src/module-info.java src/test/Main.java
    src/module-info.java:2: error: module not found: javafx.graphics
        requires javafx.graphics;
    2° methode
    VM debian
    installation de Liberica JDK 18 full VIA CE LIEN
    https://bell-sw.com/pages/liberica_i...uide-18.0.2.1/
    bash
    editeur de texte
    variable JAVA_HOME positionnée
    variable PATH positionnée

    projet nommé "test"
    avec ta structure
    avec ton code
    pas d'erreur, on obtient bien 1 fenetre noire avec 1 titre

    dc faut que je reessaye sur mon systeme d'origine avec l'installation "standard" de Liberica
    j'essaye peut etre demain, dimanche ou lundi bref qd j'ai le temps, qd j'ai l'envie.

    Bon we a toi,
    merci de ta patience et de ton soutien
    grub

  19. #19
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Ce qui semble indiquer que l'installation standard full de Liberica que tu avais n'était pas vraiment full car soit elle ne contient pas JavaFX (erreur dans le choix du DL ou erreur de la part de l'éditeur ?) soit elle est mal configurée et donc que les fichiers ne sont pas trouvés au moment de la compilation / de l'exécution.

    Dans mon cas j'ai téléchargée directement le tar.gz via la page des téléchargements et extrait l'archive dans mon répertoire Downloads sans rien faire de plus.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  20. #20
    Membre confirmé
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Par défaut
    J'arrive au resultat escompté (ms il faut que j'adapte 2-3 trucs)

    Je reponds d'abord à ton précédent puis je te montre ce que j'ai fait et ou je compte aller.

    le 1° Liberica que j'ai téléchargé contient les binaires JavaFX.
    La commande ds le Terminal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java --list-modules renvoyait bien la liste des fx (mais 7 au lieu de 8... prquoi?... no sé)
    c'est mon installation qui était foireuse. J'ai trouvé un tutoriel ou le gars explique comment installer une version supplémentaire de Java.
    https://dev.to/thegroo/install-and-m...ernatives-5e93
    il dézippe l'archive
    il lui donne les droites d'execution (chmod +x)
    il modifie 4 liens grace à la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    update-alternatives --install /usr/bin/java java /usr/lib/jvm/open-jdk-11/bin/java 1
    il (donc on) n'execute cette commande que 4x
    - pr le java
    - pr le javac
    - pr le jar
    - pr le jshell

    J'ai été chanceux avec la nvelle Liberica que j'ai installé puisque ds cet autre tuto on passe par la commande "apt install"
    https://bell-sw.com/pages/liberica_i...uide-18.0.2.1/
    et là le retour console après installation est + conséquent
    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
     
    update-alternatives 2022-08-25 09:49:17: run with --config java
    update-alternatives 2022-08-25 09:49:27: link group java updated to point to /usr/lib/jvm/liberica_full_JDK18/bin/java
    update-alternatives 2022-08-26 09:19:28: run with --config java
    update-alternatives 2022-08-26 10:48:19: run with --quiet --install /run/php/php-fpm.sock php-fpm.sock /run/php/php7.4-fpm.sock 74
    update-alternatives 2022-08-26 10:48:19: auto-repair link group php-fpm.sock
    update-alternatives 2022-08-26 15:07:28: run with --config java
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jar jar /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jar 21800003 --slave /usr/share/man/man1/jar.1 jar.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jar.1
    update-alternatives 2022-08-26 16:08:29: link group jar updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jar
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jarsigner jarsigner /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jarsigner 21800003 --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jarsigner.1
    update-alternatives 2022-08-26 16:08:29: link group jarsigner updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jarsigner
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/java java /usr/lib/jvm/bellsoft-java18-full-amd64/bin/java 21800003 --slave /usr/share/man/man1/java.1 java.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/java.1
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/javac javac /usr/lib/jvm/bellsoft-java18-full-amd64/bin/javac 21800003 --slave /usr/share/man/man1/javac.1 javac.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/javac.1
    update-alternatives 2022-08-26 16:08:29: link group javac updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/javac
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/javadoc javadoc /usr/lib/jvm/bellsoft-java18-full-amd64/bin/javadoc 21800003 --slave /usr/share/man/man1/javadoc.1 javadoc.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/javadoc.1
    update-alternatives 2022-08-26 16:08:29: link group javadoc updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/javadoc
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/javap javap /usr/lib/jvm/bellsoft-java18-full-amd64/bin/javap 21800003 --slave /usr/share/man/man1/javap.1 javap.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/javap.1
    update-alternatives 2022-08-26 16:08:29: link group javap updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/javap
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jcmd jcmd /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jcmd 21800003 --slave /usr/share/man/man1/jcmd.1 jcmd.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jcmd.1
    update-alternatives 2022-08-26 16:08:29: link group jcmd updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jcmd
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jconsole jconsole /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jconsole 21800003 --slave /usr/share/man/man1/jconsole.1 jconsole.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jconsole.1
    update-alternatives 2022-08-26 16:08:29: link group jconsole updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jconsole
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jdb jdb /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jdb 21800003 --slave /usr/share/man/man1/jdb.1 jdb.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jdb.1
    update-alternatives 2022-08-26 16:08:29: link group jdb updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jdb
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jdeprscan jdeprscan /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jdeprscan 21800003 --slave /usr/share/man/man1/jdeprscan.1 jdeprscan.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jdeprscan.1
    update-alternatives 2022-08-26 16:08:29: link group jdeprscan updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jdeprscan
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jdeps jdeps /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jdeps 21800003 --slave /usr/share/man/man1/jdeps.1 jdeps.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jdeps.1
    update-alternatives 2022-08-26 16:08:29: link group jdeps updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jdeps
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jfr jfr /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jfr 21800003 --slave /usr/share/man/man1/jfr.1 jfr.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jfr.1
    update-alternatives 2022-08-26 16:08:29: link group jfr updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jfr
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jhsdb jhsdb /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jhsdb 21800003 --slave /usr/share/man/man1/jhsdb.1 jhsdb.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jhsdb.1
    update-alternatives 2022-08-26 16:08:29: link group jhsdb updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jhsdb
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jimage jimage /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jimage 21800003
    update-alternatives 2022-08-26 16:08:29: link group jimage updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jimage
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jinfo jinfo /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jinfo 21800003 --slave /usr/share/man/man1/jinfo.1 jinfo.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jinfo.1
    update-alternatives 2022-08-26 16:08:29: link group jinfo updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jinfo
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jlink jlink /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jlink 21800003 --slave /usr/share/man/man1/jlink.1 jlink.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jlink.1
    update-alternatives 2022-08-26 16:08:29: link group jlink updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jlink
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jmap jmap /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jmap 21800003 --slave /usr/share/man/man1/jmap.1 jmap.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jmap.1
    update-alternatives 2022-08-26 16:08:29: link group jmap updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jmap
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jmod jmod /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jmod 21800003 --slave /usr/share/man/man1/jmod.1 jmod.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jmod.1
    update-alternatives 2022-08-26 16:08:29: link group jmod updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jmod
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jpackage jpackage /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jpackage 21800003 --slave /usr/share/man/man1/jpackage.1 jpackage.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jpackage.1
    update-alternatives 2022-08-26 16:08:29: link group jpackage updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jpackage
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jps jps /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jps 21800003 --slave /usr/share/man/man1/jps.1 jps.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jps.1
    update-alternatives 2022-08-26 16:08:29: link group jps updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jps
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jrunscript jrunscript /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jrunscript 21800003 --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jrunscript.1
    update-alternatives 2022-08-26 16:08:29: link group jrunscript updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jrunscript
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jshell jshell /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jshell 21800003 --slave /usr/share/man/man1/jshell.1 jshell.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jshell.1
    update-alternatives 2022-08-26 16:08:29: link group jshell updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jshell
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jstack jstack /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jstack 21800003 --slave /usr/share/man/man1/jstack.1 jstack.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jstack.1
    update-alternatives 2022-08-26 16:08:29: link group jstack updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jstack
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jstat jstat /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jstat 21800003 --slave /usr/share/man/man1/jstat.1 jstat.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jstat.1
    update-alternatives 2022-08-26 16:08:29: link group jstat updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jstat
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/jstatd jstatd /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jstatd 21800003 --slave /usr/share/man/man1/jstatd.1 jstatd.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/jstatd.1
    update-alternatives 2022-08-26 16:08:29: link group jstatd updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/jstatd
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/keytool keytool /usr/lib/jvm/bellsoft-java18-full-amd64/bin/keytool 21800003 --slave /usr/share/man/man1/keytool.1 keytool.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/keytool.1
    update-alternatives 2022-08-26 16:08:29: link group keytool updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/keytool
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/rmiregistry rmiregistry /usr/lib/jvm/bellsoft-java18-full-amd64/bin/rmiregistry 21800003 --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/rmiregistry.1
    update-alternatives 2022-08-26 16:08:29: link group rmiregistry updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/rmiregistry
    update-alternatives 2022-08-26 16:08:29: run with --install /usr/bin/serialver serialver /usr/lib/jvm/bellsoft-java18-full-amd64/bin/serialver 21800003 --slave /usr/share/man/man1/serialver.1 serialver.1 /usr/lib/jvm/bellsoft-java18-full-amd64/man/man1/serialver.1
    update-alternatives 2022-08-26 16:08:29: link group serialver updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/serialver
    update-alternatives 2022-08-26 16:11:37: run with --config java
    update-alternatives 2022-08-26 16:11:48: link group java updated to point to /usr/lib/jvm/bellsoft-java18-full-amd64/bin/java
    update-alternatives 2022-08-26 16:11:51: run with --config java
    (je ne sais pas s'il y a tt)

    A priori ma 1° install etait "light".
    Je ne sais pas ce que tu fais apres avoir dezippé l'archive

    Voilà pr la réponse

    ----------------------------------------------------------------

    on passe au probleme, ou j'en suis, ou je vais? Ben non, 1 remarque/question d'abord

    j'ai dc modifié le $PATH et le $JAVA_HOME ds MON fichier .bashrc (celui qui est attribué à moi: utilisateur sambano) et on a vu que cela fonctionnait.

    sous eclipse
    j'essaye d'avancer, je titube, je recule, je teste, bref a un moment je fais "1 carte de mon environnement"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ProcessBuilder process02 = new ProcessBuilder();
     
    						// cree 1 vue de l'environnement de process02
    						Map<String, String> vue02 = process02.environment();
     
    						// verif de l'environnement par la console
    						for (Map.Entry<String, String> entree :
    				             vue02.entrySet()) {
    				            // affiche cké et valeur separement
    				            System.out.println("Key = " + entree.getKey()
    				                               + ", Value = "
    				                               + entree.getValue());
    				        }
    retour:
    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
     
    Key = PATH, Value = /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    Key = XAUTHORITY, Value = /run/user/1000/.mutter-Xwaylandauth.V8HWR1
    Key = INVOCATION_ID, Value = 1bb1e34084c2469787780972e5f6a380
    Key = OXYGEN_DISABLE_INNER_SHADOWS_HACK, Value = 1
    Key = XMODIFIERS, Value = @im=ibus
    Key = GDMSESSION, Value = gnome
    Key = QT_IM_MODULE, Value = ibus
    Key = JAVA_HOME, Value = /usr/lib/jvm/java-17-openjdk-amd64/
    Key = LANG, Value = fr_FR.UTF-8
    Key = DBUS_SESSION_BUS_ADDRESS, Value = unix:path=/run/user/1000/bus
    Key = XDG_SESSION_TYPE, Value = wayland
    Key = XDG_CURRENT_DESKTOP, Value = GNOME
    Key = DISPLAY, Value = :0
    Key = JOURNAL_STREAM, Value = 8:26417
    Key = WAYLAND_DISPLAY, Value = wayland-0
    Key = SESSION_MANAGER, Value = local/debian:@/tmp/.ICE-unix/1528,unix/debian:/tmp/.ICE-unix/1528
    Key = USERNAME, Value = sambano
    Key = LOGNAME, Value = sambano
    Key = PWD, Value = /home/sambano
    Key = MANAGERPID, Value = 1384
    Key = IM_CONFIG_PHASE, Value = 1
    Key = XDG_SESSION_CLASS, Value = user
    Key = _, Value = /usr/bin/gnome-session
    Key = GJS_DEBUG_TOPICS, Value = JS ERROR;JS LOG
    Key = SHELL, Value = /bin/bash
    Key = GDM_LANG, Value = fr_FR.UTF-8
    Key = GIO_LAUNCHED_DESKTOP_FILE, Value = /home/sambano/.local/share/applications/epp.package.java.desktop
    Key = LIBOVERLAY_SCROLLBAR, Value = 0
    Key = GDK_CORE_DEVICE_EVENTS, Value = 1
    Key = DESKTOP_SESSION, Value = gnome
    Key = USER, Value = sambano
    Key = XDG_MENU_PREFIX, Value = gnome-
    Key = GIO_LAUNCHED_DESKTOP_FILE_PID, Value = 53718
    Key = QT_ACCESSIBILITY, Value = 1
    Key = GJS_DEBUG_OUTPUT, Value = stderr
    Key = GNOME_DESKTOP_SESSION_ID, Value = this-is-deprecated
    Key = SSH_AUTH_SOCK, Value = /run/user/1000/keyring/ssh
    Key = GTK_MODULES, Value = gail:atk-bridge
    Key = XDG_SESSION_DESKTOP, Value = gnome
    Key = GNOME_SETUP_DISPLAY, Value = :1
    Key = XDG_RUNTIME_DIR, Value = /run/user/1000
    Key = SSH_AGENT_LAUNCHER, Value = openssh
    Key = HOME, Value = /home/sambano
    Key = SHLVL, Value = 0
    ce qui me donne en retour
    et là, on voit bien que le $PATH et le $JAVA_HOME ne st pas du tout ceux que j'ai paramétré..? eclipse tourne sous 1 utilisateur qui n'est pas moi?
    Enfin bref, cô dit, cela fonctionne. Si t'as la réponse tant mieux, sinon...

    --------------------------------------------------------------------------------------------------

    derniere partie: ou j'en suis

    j'ai d'abord essayé sous le Terminal puis sous eclipse.
    Les 2 fonctionnent.

    Voici 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
    91
    92
    93
    94
    95
    96
    97
     
    @FXML
    	private void executerFichierJava02() {
     
    		//
    		System.out.println("");
    		System.out.println("method: executerFichierJava02()");
    		System.out.println("create 1 Service and 1 Task");
    		System.out.println("return 1 ProcessBuilder to");
    		System.out.println("execute 1 Java class (from project JavaFX_Test02_Desvstory)");
     
    		final Service<Integer> service01 = new Service<Integer>() {
     
    			// --- step 03, override createTask() method
    			@Override
    			protected Task<Integer> createTask() {
     
    				return new Task<Integer>() {
     
    					// --- step 04, override call() method
    					@Override
    					protected Integer call() throws Exception {
     
    						//-------------------------------------------------
    						//
    						ProcessBuilder process02 = new ProcessBuilder();
     
    						// cree 1 vue de l'environnement de process02
    						Map<String, String> vue02 = process02.environment();
     
    						// verif de l'environnement par la console
    						for (Map.Entry<String, String> entree :
    				             vue02.entrySet()) {
    				            // affiche cké et valeur separement
    				            System.out.println("Key = " + entree.getKey()
    				                               + ", Value = "
    				                               + entree.getValue());
    				        }
    						//--------------------------------------------------
     
    						// 07: fonctionne
    						// chemins absolus
    						// aussi ds eclipse que ds le terminal
    						// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac", "-d", "./out", "/media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/module-info.java", "/media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test01_Hello_Devstory/src/application/Main.java");
    						ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java", "-p", "./out", "-m", "JavaFX_Test01_Hello_Devstory/application.Main");
     
    						//
    						return process01
    				                .inheritIO()
    				                .start()
    				                .waitFor();
     
    					}
     
    				};
     
    			}
     
    		};
     
    		// --------------------------------------------------------
     
    		//
    		// 2° possibilité, en utilisant des callbacks
    		service01.setOnReady(event -> {
    			System.out.println("par le callback, service 01 ready");
     
    		});
    		service01.setOnScheduled(event -> {
    			System.out.println("par le callback, service 01 scheduled");
    		});
    		service01.setOnRunning(event -> {
    			System.out.println("par le callback, service 01 running...");
    		});
    		service01.setOnSucceeded(event -> {
    			System.out.println("par le callback, service 01, etat, success");
    		});
    		service01.setOnFailed(event -> {
    			System.out.println("par le callback, service 01, etat, failed");
    			System.err.println("echec du service");
    			service01.getException().printStackTrace();
    		});
    		service01.setOnCancelled(event -> {
    			System.out.println("par le callback, service 01, etat, cancelled");
    		});
     
    		// --------------------------------------------------------
     
    		// demarrer l'instance de Service
    		// la variable portée class
    		// prend la valeur de la variable portée locale
    		serviceB = service01;
     
    		// on demarre l'instance service de Service
            serviceB.start();		
     
    	}
    il faut regarder L44 et 45.
    Je dois trouver un moyen de creer et retourner 2 ProcessBuilder.
    il y'a ce lien:
    https://stackoverflow.com/questions/...-a-java-method
    ca date un peu ms bon.

    Dc j'essaye et je viens me plaindre ds 1 petite semaine.

    Désolé pr la longueur des messages, j'essaye d'etre comprehensible et complet.
    Bonne soirée et bon we.
    grub

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2021, 03h01
  2. Réponses: 6
    Dernier message: 22/12/2004, 11h00
  3. Perte de gestionnaire d'événements dans une fenêtre
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 15
    Dernier message: 23/08/2004, 20h14
  4. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 14h52
  5. [JDialog] Modification dans une fenêtre
    Par cefabien dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 01/10/2003, 13h18

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