IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

problème pour créer un .jar


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut problème pour créer un .jar
    Bonjour, j'ai une application qui doit créer un nouveau jar avec des fichiers spécifiés par l'utilisateur.
    Je récupère donc les chemins de ces 2 fichiers dans la forme:
    C:\niania\fichier.txt

    Je crée donc un FileInputStream vers chacun de ces fichiers, cependant il me met que le InputStream vaut null. Je ne vois pas d'où vient le problème, j'ai contrôlé les chemins dans un println, tout est est ok.

    voici la méthode qui crée le jar:

    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
    public void jar() { //méthode pour creer le jar
    		try {
    			Pattern p = Pattern.compile("\\\\");
    			String item1[] = p.split(chemin1);
    			String item2[] = p.split(chemin2);
    			String nom1 = item1[item1.length-1];
    			String nom2 = item2[item2.length-1];
    			File[] fichiers = new File[]{new File("/MANIFEST.MF"), new File("/class_main.class"), new File("/thread_extract.class"), new File(nom1), new File(nom2), new File("config.ini")};
    			FileOutputStream stream = new FileOutputStream("fichier_binder.jar");
    			InputStream reader;
    			JarOutputStream out = new JarOutputStream(stream);
    			JarEntry entry;
     
    			for(int i=0 ; i < fichiers.length ; i++) {
    				if(fichiers[i].getName().equals("MANIFEST.MF"))
    					entry = new JarEntry("META-INF/"+fichiers[i].getName()); //on le met dans le dossier META-INF
    				else
    					entry = new JarEntry(fichiers[i].getName());
     
    				out.putNextEntry(entry);
    				if(fichiers[i].getName().equals("config.ini")) //il n'est pas en ressource
    					reader = new FileInputStream(fichiers[i].getName());
    				else if(fichiers[i].equals(nom1))
    					reader = new FileInputStream(chemin1);
    				else if(fichiers[i].equals(nom2))
    					reader = new FileInputStream(chemin2);
    					else
    					reader = getClass().getResourceAsStream(fichiers[i].getName());
     
    				if(reader != null) {
    					byte[] tab = new byte[1024];
    					int nbreoctet = 0; //on prepare les variables pour la copie
     
    					while((nbreoctet = reader.read(tab)) != -1) {
    						out.write(tab, 0, nbreoctet);
    					}
    					out.flush();
    					reader.close();
    					jop.showMessageDialog(null, fichiers[i].getName()+" ajoute avec succès", "fichier ajoute", JOptionPane.INFORMATION_MESSAGE);
    				}
    				else {
    					jop.showMessageDialog(null, "le fichier "+fichiers[i].getName()+" est manquant", "fichier manquant", JOptionPane.ERROR_MESSAGE);
    				}
    			}
    			out.close();
    			stream.close();
    		}catch(Exception e) { e.printStackTrace(); }
    	}
     
    }
    Là j'ai vraiment besoin de votre aide^^
    Donc si quelqu'un voit d'où peu provenir le problème...

    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    tu pourrais pas nous donner ta stackTrace, stp pour un peut plus d'indices,
    ton tableau de File est-il bien construit?

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en plus t'as des incohérences:
    Tu mélange des File est de ressources, on fait pas un new File() sur une ressource
    new File("/MANIFEST.MF"),
    ....
    if(fichiers[i].getName().equals("MANIFEST.MF"))


    t'as oublié le "/"

    Enfin, tu trouvera probablement pas de ressource /MANIFEST.MF car c'est /META-INF/MANIFEST.MF

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Aillait ça marche, j'avais oublié une méthode .getName("");

    Donc un jar est crée, lorsque je le lance, nickel, par contre, lorsque je passe par un shell, il me met noClassDeffoundError.

    C'est censé venir du classpath, mais vu que en lançant le jar directe, ça marche, je me demandais si c'était vraiment ça.

    De plus, avec mon ancien pc, je n'ai jamais eu à configurer de classpath et ça marchait nickel, donc je vois pas trop comment faire.

    Merci beaucoup pour votre aide

Discussions similaires

  1. Problème pour créer un jar executable
    Par userJDBC dans le forum JDBC
    Réponses: 1
    Dernier message: 08/02/2007, 16h15
  2. [RMI] problème pour créer les _Skel et _Stub
    Par nixonne dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 06/07/2006, 19h49
  3. Problème pour créer une clé étrangère
    Par DevloNewb' dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2006, 16h30
  4. Problème pour créer la relation
    Par LeNeutrino dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/02/2006, 13h24
  5. [XML word] problème pour créer des puces
    Par ratapapa dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/07/2005, 13h52

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