# Manifest Datei auslesen?



## Xams (9. Jul 2007)

Wie kann man die Manifest Datei eines Jars auslesen und nach bestimmten Tags suchen?
Muss man da über JarInputStream gehen?


----------



## egrath (10. Jul 2007)

Hallo,

ich habs zwar nicht probiert, aber "ZipFile" könnte dein Freund sein. Das Manifest ist ja nichts anderes als eine Datei im Jar (welche ja nur ein ZIP File mit einer anderen Endung ist).

Grüsse,
    Egon


----------



## M.Schlierf (20. Jul 2007)

also ich mach das so:


```
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

import javax.servlet.ServletContext;

public class manifestReader {
    public static Hashtable<String, String> getManifest(String path, ServletContext context){
        Hashtable<String, String> ret = new Hashtable<String, String>();
        try {
            URL jarURL =  context.getResource(path);
            InputStream is = jarURL.openStream();
            Manifest mf = new Manifest(is);
            Attributes att = mf.getMainAttributes();
            Set<Entry<Object,Object>> entries = att.entrySet();
            Iterator<Entry<Object, Object>> itr = entries.iterator();
            while (itr.hasNext()) {
                Entry element = (Entry) itr.next();
                ret.put(element.getKey().toString(),element.getValue().toString());
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return ret;
    }
    
    public static String readManifest(String key, ServletContext application) {
        try {
            URL jarURL =  application.getResource("/META-INF/MANIFEST.MF");
            InputStream is = jarURL.openStream();
            Manifest mf = new Manifest(is);
            Attributes att = mf.getMainAttributes();
            return att.getValue(key);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }      
        return "";
    }
}
```

Ob das gut oder schlecht ist (es wird hier ja schon über gute und schlechte Entwickler dikutiert ;-) ) weis ich nicht, aber es funktioniert *g*


----------



## semi (21. Jul 2007)

Siehe auch JarFile#getManifest()


----------

