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 :

C'est une pomme "Manifestement"


Sujet :

Langage Java

  1. #1
    Membre du Club
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 67
    Points
    67
    Par défaut C'est une pomme "Manifestement"
    Bonjour, une petite particularité que je ne m'explique pas à l'appel d'une option de mon jar.

    Soit la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private static void optionSelector(String option){
        	if(option.equalsIgnoreCase("--version")){
    			printVersion(System.out);
    		} else if (option.equalsIgnoreCase("--manifest")){
    			printManifest(System.out);
    		}
        }
    Cette fonction est appelée par mon main avec args[0] en paramètre.

    Les fonctions printVersion() et printManifest() font appel à un Jar disons Utilities.jar.

    Mon programme quant à lui est empaqueté dans un autre jar nommé package.jar.

    Lorsque je produis l'appel:
    java -Xbootclasspath/a:Utilities.jar;. -jar package.jar --manifest
    j'obtiens:
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.1
    Created-By: 16.0-b13 (Sun Microsystems Inc.)
    Built-By: galyathee
    Implementation-Version: 1.00-b28
    Build-Date: 2010-03-12 14:25:44


    Seulement, lorsque je ne fournis pas le Jar contenant ma fonction en paramètre, ou que cet argument du classpath est faux j'obtiens:
    Manifest-Version: 1.0
    Sealed: true
    Created-By: 1.5.0_07 (Apple Computer, Inc.)


    ??? QUID de la pomme ?

    Ma conf est:
    ANT Version Apache Ant version 1.7.1 compiled on June 27 2008
    Java Version 1.6.0_18-b07


    G.

    ps: je n'ai pas produit ce code sur un mac mais sur un pc.

    ps2: tout de même, c'est cool ...

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pourquoi tu utilises -Xbootclasspath ???

    Sinon il faudrait voir le code de ta méthode printManifest()...

    a++

  3. #3
    Membre du Club
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 67
    Points
    67
    Par défaut
    Pourquoi tu utilises -Xbootclasspath ???
    Mon composant sera appelé en utilisant l'API de reflexion. La classe principale du composant désactive le Classloader. Donc en gros, si je ne fais pas un push explicite de ma librairie (par exemple en utilisant -cp à la place) la librairie restera invisible dans mon appli (i.e. je récupère un classNotFound)

    Sinon il faudrait voir le code de ta méthode printManifest()...
    La fonction printManifest:
    Nota: GenericPluginHelper est le nom de la classe courante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void printManifest(PrintStream ps){
        	GenericPluginHelper PH = new GenericPluginHelper();
            FileHelper.printFileFromJar(PH, "/META-INF/MANIFEST.MF", ps);
    }
    FileHelper.printFileFromJar
    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
     
    /**
             * Print the content of a file in a Jar file
             * 
             * @param oClass - source class
             * @param filename - file to read
             * @param out - outputstream
             */
    	public static boolean printFileFromJar(Object oClass, String filename, PrintStream out) {
    		InputStream is = null;
    		BufferedReader br = null;
    		String line;
     
    		try {
    			is = oClass.getClass().getResourceAsStream(filename);
    			br = new BufferedReader(new InputStreamReader(is));
    			while (null != (line = br.readLine())) {
    				out.println(line);
    			}
    			return true;
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (br != null)
    					br.close();
    				if (is != null)
    					is.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		return false;
    	}
    ... pas de Apple Inc là dedans à priori ... et pas non plus dans mon manifest !

Discussions similaires

  1. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12

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