Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lors de la création du .jar

    3 juillet 2021 à 21:38:49

    Bonjour tout le monde,

    Voilà je vous explique mon problème, j'essaye de créer un mini jeu, pour m'entrainer à programmer en Java, et j'aimerais créer une archive jar, pour pouvoir exécuter ce mini jeu, le problème, c'est que dans ce jeu, j'utilise des fichier en .xml, qui n'arrive pas à être exécuter dans cette archive jar.

    Pourtant, quand je compile, tout fonctionne parfaitement bien, je ne comprends pas trop ce que j'ai fais de mal. Est - ce que vous auriez des idées pour que je puisse réglé mon problème ? 

    PS: Désolé pour les fautes d'orthographes, et aussi j'utilise IntelliJ comme IDE ^^.

    • Partager sur Facebook
    • Partager sur Twitter
      4 juillet 2021 à 14:55:27

      Je le charge avec cette ligne de code : 

      Document doc = builder.parse(new File(Objects.requireNonNull(getClass().getClassLoader().getResource(path)).toURI()));


      D'ailleurs je viens de voir que je n'avais pas mis le message d'erreur dans mon premier post, du coup je le mets ici x)

      java.lang.IllegalArgumentException: URI is not hierarchical
             at java.io.File.<init>(Unknown Source)
             at fr.swynn.game.tiles.TileManager.addTileMap(TileManager.java:48)
             at fr.swynn.game.tiles.TileManager.<init>(TileManager.java:29)
             at fr.swynn.game.states.PlayState.<init>(PlayState.java:27)
             at fr.swynn.game.states.GameStateManager.<init>(GameStateManager.java:26)
             at fr.swynn.game.GamePanel.init(GamePanel.java:57)
             at fr.swynn.game.GamePanel.run(GamePanel.java:61)
             at java.lang.Thread.run(Unknown Source)



      -
      Edité par Swynn 4 juillet 2021 à 14:59:00

      • Partager sur Facebook
      • Partager sur Twitter
        4 juillet 2021 à 15:07:05

        Dans un jar (ou n'importe quelle archive) ce sont des streams qu'il faut manipuler, getresourceasstream donc
        • Partager sur Facebook
        • Partager sur Twitter
          4 juillet 2021 à 16:35:25

          J'ai déjà essayer, le problème c'est que du coup il me renvoi un object, et par conséquent ça créer une erreur :c 

          Hors j'ai besoin de lui indiqué un chemin vers mon fichier 

          Je la joint si dessous : 

          java.io.FileNotFoundException: C:\Users\----\IdeaProjects\JavaGame\java.io.BufferedInputStream@3552e623 (Le fichier spécifié est introuvable)
          	at java.io.FileInputStream.open0(Native Method)
          	at java.io.FileInputStream.open(FileInputStream.java:195)
          	at java.io.FileInputStream.<init>(FileInputStream.java:138)
          	at java.io.FileInputStream.<init>(FileInputStream.java:93)
          	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
          	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
          	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:622)
          	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)
          	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:831)
          	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:796)
          	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:142)
          	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247)
          	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
          	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
          	at fr.swynn.game.tiles.TileManager.addTileMap(TileManager.java:48)
          	at fr.swynn.game.tiles.TileManager.<init>(TileManager.java:29)
          	at fr.swynn.game.states.PlayState.<init>(PlayState.java:27)
          	at fr.swynn.game.states.GameStateManager.<init>(GameStateManager.java:26)
          	at fr.swynn.game.GamePanel.init(GamePanel.java:57)
          	at fr.swynn.game.GamePanel.run(GamePanel.java:61)



          -
          Edité par Swynn 4 juillet 2021 à 16:56:40

          • Partager sur Facebook
          • Partager sur Twitter
            4 juillet 2021 à 20:16:05

            Bon, faut pas tourner autour du pot. Si on n'a pas le source, on sait pas ce qui se passe.

            En pratique, il faut essayer d'abord sur un mini exemple.

            • un xml qui contient une chaine
            • un code java qui lit ce xml et fait afficher la chaine
            Compiler, fabriquer le jar, et voir si on arrive à le lancer.

            -
            Edité par michelbillaud 4 juillet 2021 à 20:16:34

            • Partager sur Facebook
            • Partager sur Twitter
              4 juillet 2021 à 20:52:33

              Forcément, tu charges un file, alors que c'est un stream que tu dois manipuler.
              • Partager sur Facebook
              • Partager sur Twitter
                4 juillet 2021 à 22:53:34

                Exemple, un main qui fait afficher le contenu d'un fichier "fichier.txt"

                package lectureressource;
                
                import java.io.InputStream;
                import java.util.Scanner;
                
                public class LectureRessource {
                
                    public static void main(String[] args) {
                        InputStream stream = LectureRessource.class.getResourceAsStream("fichier.txt");
                        Scanner scanner = new Scanner(stream);
                        String message = scanner.nextLine();
                        System.out.println("message = " + message);
                    }
                    
                }
                

                contenu dans un jar

                $ jar -tf LectureRessource/dist/LectureRessource.jar 
                META-INF/
                META-INF/MANIFEST.MF
                lectureressource/
                lectureressource/LectureRessource.class
                lectureressource/fichier.txt
                

                Execution

                $ java -jar LectureRessource/dist/LectureRessource.jar 
                message = hello, world
                





                • Partager sur Facebook
                • Partager sur Twitter

                Problème lors de la création du .jar

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