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

IO Java Discussion :

Lien fichier export jar


Sujet :

IO Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    février 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2019
    Messages : 39
    Points : 23
    Points
    23
    Par défaut Lien fichier export jar
    Bonjour,

    Je me permets de vous contacter pour une question. Je précise que je suis développeur junior en JAVA.

    Il y a quelques semaines, on m'a aider avec l'export d'un jar où les images ne s'affiches pas. Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static final String SUPPRIMER = "icons8-effacer-50.png";
     
    	public static Icon getIcon(String name) {
    		return new ImageIcon(Image.class.getResource(name));
    	}
    J'ai eu l'idée de reprendre le même principe pour les fichiers .doc, .pdf et ma base de données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static final String BDD = "bdd.db";
     
    	public static URL getFile(String name) {
    		return Fichier.class.getResource(name);
    	}
    Avec cela je récupère si j'ai bien compris la méthode, le lien du fichier BDD.db mais lors de l'export j'ai un problème avec ce fichier. Donc je voulais savoir le problème qui ce génère quand j'exporte mon jar.

    Cordialement

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

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 373
    Points : 29 312
    Points
    29 312
    Billets dans le blog
    2
    Par défaut
    Salut,

    Les ressources, les fichiers binaires autres que des classes, qui sont placées dans un jar ne peuvent pas être modifiées au runtime. Un fichier de base de données pourrait être utilisés en lecture seule, mais il est possible que le programme qui l'utilise (je ne sais pas ce que c'est), même probable, l'ouvre en le verrouillant, même pour lecture seule, ne serait-ce que pour garantir l'exclusivité d'accès. Il peut même être nécessaire que pour des raisons techniques le fichier nécessite d'être modifiable pour lecture seule (db temporaire, log, etc...). On ne peut donc pas le mettre en ressource pour travailler directement avec. En lecture seule, on pourrait vouloir le mettre dans le jar pour le fournir par défaut, voire même en lecture/écriture, fournir une version de base. Dans ce cas, il suffit lors de l'exécution de l'exporter du jar vers un dossier du disque (dossier de données d'application (genre AppData sur Windows)) : à l'exécution, on teste son existence, si on le trouve pas, on l'installe en l'exportant depuis la ressource, et c'est celui-là qu'on utilise ensuite.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    février 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2019
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Oui je vois mais il y a un moyen de contrer cela?

    Je viens d’exécuter en console mon application et je viens de voir autre chose qui est surement lié.
    Une erreur de fichier sur le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    path to 'other/file/Genosia.db : C:\user\Wizard\Dektop\other does exist
    il ne trouve pas le fichier, pourtant mon fichier Genosia.db se trouve bien dans un packages sous other.file

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

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 373
    Points : 29 312
    Points
    29 312
    Billets dans le blog
    2
    Par défaut
    Qui affiche ce message ? Si c'est "Java", tu as une stacktrace ? C'est quoi le code exactement ?

    Et contrer quoi ? Le fait qu'on ne puisse pas modifier de ressource dans un jar ? Non. Enfin rien n'est impossible, mais ce serait une usine à gaz. Ce n'est pas fait pour ça, les ressources.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    février 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2019
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Ma console (CMD d’exécution du programme) m'affiche ce message quand j'execute mon application de cette manière : java -jar Genosia.jar
    Le messages est une erreur SQL sur le chemin je me suis mal exprimer avant je m'en excuse.
    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
     
    C:\Users\Wizard\Desktop>java -jar Genosia.jar
    jar:file:/C:/Users/Wizard/Desktop/Genosia.jar!/other/file/Genosia.db
    java.sql.SQLException: path to 'other/file/Genosia.db': 'C:\Users\Wizard\Desktop\other' does not exist
            at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)
            at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:61)
            at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28)
            at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:21)
            at org.sqlite.JDBC.createConnection(JDBC.java:115)
            at org.sqlite.JDBC.connect(JDBC.java:90)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at model.BDConnect.ListeClient(BDConnect.java:137)
            at view.PanClientListe.<init>(PanClientListe.java:29)
            at control.ActionMouseAdapter.mouseClicked(ActionMouseAdapter.java:66)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at javax.swing.JComponent.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.awt.EventQueue.access$500(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at model.BDConnect.ListeClient(BDConnect.java:154)
            at view.PanClientListe.<init>(PanClientListe.java:29)
            at control.ActionMouseAdapter.mouseClicked(ActionMouseAdapter.java:66)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at javax.swing.JComponent.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.awt.EventQueue.access$500(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    voici toute la stacktrace.

    Le code est le suivant :
    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
     
    public class PanClientListe extends JPanel{
    /**
    *
    */
    private static final long serialVersionUID = -7963265074334568901L;
    private BDConnect bdd = new BDConnect();
     
    String[] entete = {"ID","Nom", "Adresse", "Société", "Mail", "Ville"};
    JScrollPane scroll;
    public static JTable tabClient;
     
    DefaultTableModel model = new DefaultTableModel(bdd.ListeClient(), Arrays.stream(entete).collect(Collectors.toCollection(Vector::new))) { // appele de la fonction BDD.ListeClient
    /**
    *
    */
    private static final long serialVersionUID = 4601144651667052648L;
     
    public boolean isCellEditable(int row, int col) {
    return false;
    }
    };
     
    public PanClientListe() {
    setBackground(Color.LIGHT_GRAY);
    setPreferredSize(new Dimension(1450, 674));
    tabClient = new JTable(model);
    tabClient.getColumnModel().getColumn(0).setPreferredWidth(5);
    tabClient.getColumnModel().getColumn(1).setPreferredWidth(150);
    tabClient.getColumnModel().getColumn(2).setPreferredWidth(300);
    tabClient.getColumnModel().getColumn(3).setPreferredWidth(250);
    tabClient.getColumnModel().getColumn(4).setPreferredWidth(350);
    tabClient.getColumnModel().getColumn(5).setPreferredWidth(250);
    tabClient.setModel(model);
    tabClient.setBackground(new Color(220, 220, 220));
    tabClient.setFocusable(false);
    tabClient.setIntercellSpacing(new java.awt.Dimension(0, 0));
    tabClient.setRowHeight(25);
    tabClient.setSelectionBackground(new java.awt.Color(232, 57, 95));
    tabClient.setShowVerticalLines(false);
    tabClient.getTableHeader().setReorderingAllowed(false);
    tabClient.getTableHeader().setFont(new Font("Arial", Font.BOLD, 22));
    tabClient.getTableHeader().setOpaque(false);
    tabClient.getTableHeader().setBackground(new Color(32, 136, 203));
    tabClient.getTableHeader().setForeground(new Color(255,255,255));
    setLayout(null);
    tabClient.setFont(new Font("Arial", Font.BOLD, 16));
    tabClient.setRowHeight(25);
    tabClient.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    tabClient.addMouseListener(new ActionMouseAdapter());
    scroll = new JScrollPane(tabClient);
    scroll.setBounds(0, 0, 1450, 674);
    add(scroll);
    }
    }
    A la ligne 27 il y a bdd.ListeClient qui appelle la méthode suivante

    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
     
    public Vector ListeClient() {
    Vector<Object> rowData = new Vector<>();
    Statement st = null;
    Connection cn = null;
    ResultSet rs = null;
    try {
    cn = DriverManager.getConnection("jdbc:sqlite:" + Fichier.getFile(Fichier.BDD));
    st = cn.createStatement();
    rs = st.executeQuery("SELECT ID_Client, Nom_Client, Adresse_Client, Societe_Client, Mail_Client, Ville_Client FROM Client");
    while(rs.next()) {
    Vector<Object> row = new Vector<>();
    row.add(rs.getInt("ID_Client")); //ID
    row.add(rs.getString("Nom_Client")); // Nom
    row.add(rs.getString("Adresse_Client")); // Adresse
    row.add(rs.getString("Societe_Client")); // Societe
    row.add(rs.getString("Mail_Client")); // Mail
    row.add(rs.getString("Ville_Client")); // Ville
    rowData.add(row);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    try {
    cn.close();
    st.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return rowData;
    }

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

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 373
    Points : 29 312
    Points
    29 312
    Billets dans le blog
    2
    Par défaut
    L'accès JDBC attend que tu lui fournisse un chemin de fichier. Tu lui fournis une URL de ressource dans un jar, qui n'est pas un fichier. Visiblement le pilote tente quand même d'essayer d'interpréter quelque chose (que retourne Fichier.getFile(Fichier.BDD) au juste ? Quand tu montres du code, il faut montre que le code pertinent mais tout le code pertinent) et du coup, il cherche dans 'C:\Users\Wizard\Desktop\other' qu'il ne trouve pas.

    Ce qu'il faut que tu fasses, c'est exporter la ressource dans un fichier.

    dans ton main tu appelles une méthode qui fait cet export.

    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
    public class Fichier {
    private static final String BDD = "Genosia.db";  // 
    private static Path dbfile ; 
    public static Path getAppDataFolder() { // une méthode qui va déterminer le dossier dans lequel l'application stockera ses données fichiers qui ne sont pas des fichiers de l'utilisateur
       return Paths.get(System.getProperty("user.dir"),"<ici tu met un nom qui correspond à ton application par exemple applicationtrucwizar>");
    }
    public static void installDB() throws IOException { // méthode à appeler dès le démarrage de l'application
     
         Path appfolder = getAppDataFolder();
     
         if ( !Files.exists( appfolder ) ) {
              // le dossier n'existe pas, on le créé
              Files.createDirectories( appfolder );
         }
     
         Path dbfile = getDBFile();
         if ( !Files.exists( getDBFile() ) ) { 
              // le fichier de base de données n'existe pas, on le créé
              try(InputStream in : Fichier.getResourceAsStream(BDD)) { // note bien le AsStream : ça retourne directement le inputstream ouvert au lieu de l'url 
                  Files.copy(in, dbfile);
              }
         } 
     
    }
    private static Path getDBFile() throws IOException { // une méthode qui détermine le chemin local de la base
        if ( dbfile==null ) {
             dbfile = getAppDataFolder().resolve( BDD );
             dbfile = dbfile.toRealPath(); // on ne sait jamais, si c'était un lien symbolique
        }
        return dbfile;
    }
    public static String getJDBCURL() { // méthode à appeler pour créer la connexion à la base
          if ( dbfile==null ) throw new IllegalStateException(); // on n'a pas appelé installDB()
          return "jdbc:sqlite:"+dbfile;
    }
    public static void uninstall() throws IOException { // il faut prévoir une méthode de désinstallation, éventuellement qu'on puisse appeler en console, donc une méthode main qui l'appelle, pour supprimer les fichiers locaux
         Path appfolder = getAppDataFolder();
     
         if ( Files.exists( appfolder ) ) {
              // le dossier existe
     
              Path dbfile = getDBFile();
              if ( Files.exists( dbfile ) ) {
                   // le fichier existe, on le supprime
                   Files.delete( dbfile );
              }
              Files.delete(dbfile); // on supprime le dossier. Attention si tu mettais d'autres fichiers dans ce dossier, il faudrait les effacer avant
     
         } 
     
    }
     
    /*...*/
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    février 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2019
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    oui pardon j'ai oublié une partie...
    Je viens de voir votre code que vous avez écrit mais il y a une ligne que je comprend pas vraiment cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Path dbfile = getDBFile();
    	     if ( !Files.exists( getDBFile() ) ) { 
    	          // le fichier de base de données n'existe pas, on le créé
    	          try(InputStream in : Fichier.getResourceAsStream(BDD)) { // note bien le AsStream : ça retourne directement le inputstream ouvert au lieu de l'url 
    	              Files.copy(in, dbfile);
    	          }
    	     }
    On appelle la méthode .getResourceAsStream(BDD) mais cette méthode n'existe pas dans Fichier donc j'ai du mal à comprendre le principe. Pourrez-vous m'éclairer?

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

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 373
    Points : 29 312
    Points
    29 312
    Billets dans le blog
    2
    Par défaut
    Ah, j'ai tapé un peu vite et j'ai oublié le .class (c'est comme pour getResource() mais ça ouvre le InputStream de l'url qu'on obtient par getResource(), je l'ai dit et tu aurais pu corriger de toi-même).

    C'est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    try(InputStream in : Fichier.class.getResourceAsStream(BDD)) { // note bien le AsStream : ça retourne directement le inputstream ouvert au lieu de l'url 
    	              Files.copy(in, dbfile);
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    février 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2019
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Merci cela fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JAR] Export jar exécutable
    Par meli0207 dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 15/06/2010, 16h19
  2. Réponses: 2
    Dernier message: 01/10/2008, 11h15
  3. [export jar] inclure une lib externe
    Par EpOnYmE187 dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 14/03/2008, 17h23
  4. Réponses: 6
    Dernier message: 17/04/2005, 11h58
  5. Problème d'exportation jar : où est mon répertoire bin ?
    Par fredcontin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/05/2004, 17h57

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