Wednesday, June 12, 2013

How to read Manifest files from set of jar files in one shot:

package com.org.myorg.utils;

import java.io.File;
import java.io.PrintWriter;
import java.util.Map;
import java.util.jar.Attributes;
import java.util.jar.Attributes.Name;
import java.util.jar.JarFile;
import java.util.jar.Manifest;

public class JarVersionFinder {

public static void main(String[] args) throws Exception{
File[] files = new File("C:/Chandra/OTTServer_CodeBase/ottpush/rpm/jboss_pushjvm/ottpush/deploy/ottpush.war/WEB-INF/lib").listFiles();
PrintWriter writer = new PrintWriter("C:/Chandra/OTTServer_CodeBase/PushJars.txt", "UTF-8");

for(File f:files) {
System.out.println("-----------------------------------------------------------------");
System.out.println(f.getName());
writer.println("-------------------------------------------------------------------");
writer.println(f.getName());
writer.println("-------------------------------------------------------------------");

try {
JarFile jar = new JarFile(f);
final Manifest manifest = jar.getManifest();
final Attributes mattr = manifest.getMainAttributes();
for (Object a : mattr.keySet()) {
System.out.println(a+": "+mattr.getValue((Name)a));
writer.println(a+": "+mattr.getValue((Name)a));
}

final Map attrs = manifest.getEntries();
for (String name : attrs.keySet()) {
final Attributes attr = attrs.get(name);
for (Object a : attr.keySet()) {
System.out.println(a+": "+attr.getValue((Name)a));
writer.println(a+": "+attr.getValue((Name)a));
}
}
} catch (Exception x) {
System.err.println("Failed to read manifest for "+
f.getAbsolutePath()+": "+x);
}
}
writer.flush();
writer.close();
}
}

No comments: