List of usage examples for java.util.jar JarFile close
public void close() throws IOException
From source file:JarRead.java
public static void main(String args[]) throws IOException { if (args.length != 2) { System.out.println("Please provide a JAR filename and file to read"); System.exit(-1);// www . j a va 2s.c om } JarFile jarFile = new JarFile(args[0]); JarEntry entry = jarFile.getJarEntry(args[1]); InputStream input = jarFile.getInputStream(entry); process(input); jarFile.close(); }
From source file:Main.java
public static void main(String args[]) throws IOException { JarFile jarFile = new JarFile("c:/abc/yourJarFileName.jar"); Enumeration<JarEntry> e = jarFile.entries(); while (e.hasMoreElements()) { process(e.nextElement());/*from w ww .j a v a2 s . c o m*/ } jarFile.close(); }
From source file:Main.java
public static void main(String args[]) throws IOException { JarFile jarFile = new JarFile(new File("c:/abc/yourJarFileName.jar")); Enumeration<JarEntry> e = jarFile.entries(); while (e.hasMoreElements()) { process(e.nextElement());/*from w w w. ja va 2 s . co m*/ } jarFile.close(); }
From source file:org.apache.hadoop.hbase.util.RunTrigger.java
/** * @param args//from ww w .ja v a 2 s . c o m * @throws Throwable */ public static void main(String[] args) throws Throwable { String usage = "RunTrigger jarFile [mainClass] args..."; if (args.length < 1) { System.err.println(usage); System.exit(-1); } int firstArg = 0; String fileName = args[firstArg++]; File file = new File(fileName); File tmpJarFile = new File("/tmp/hbase/triggerJar/trigger.jar"); if (tmpJarFile.exists()) { tmpJarFile.delete(); } FileUtils.copyFile(file, tmpJarFile); String mainClassName = null; JarFile jarFile; try { jarFile = new JarFile(fileName); } catch (IOException e) { throw new IOException("Error opening trigger jar: " + fileName).initCause(e); } Manifest manifest = jarFile.getManifest(); if (manifest != null) { mainClassName = manifest.getMainAttributes().getValue("Main-Class"); } jarFile.close(); System.out.println("Manifest From Jar: " + mainClassName); if (mainClassName == null) { if (args.length < 2) { System.err.println(usage); System.exit(-1); } mainClassName = args[firstArg++]; } System.out.println("Manifest class from argument: " + mainClassName); mainClassName = mainClassName.replace("/", "."); //'hbase.tmp.dir' File tmpDir = new File("/tmp/hbase/trigger/"); tmpDir.mkdirs(); if (!tmpDir.isDirectory()) { System.err.println("Mkdirs failed to create " + tmpDir); System.exit(-1); } final File workDir = File.createTempFile("trigger-unjar", "", tmpDir); workDir.delete(); workDir.mkdirs(); if (!workDir.isDirectory()) { System.err.println("Mkdirs failed to create " + workDir); System.exit(-1); } Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { try { FileUtil.fullyDelete(workDir); } catch (IOException e) { } } }); unJar(file, workDir); ArrayList<URL> classPath = new ArrayList<URL>(); classPath.add(new File(workDir + "/").toURL()); classPath.add(file.toURL()); classPath.add(new File(workDir, "classes/").toURL()); File[] libs = new File(workDir, "lib").listFiles(); if (libs != null) { for (int i = 0; i < libs.length; i++) { classPath.add(libs[i].toURL()); } } ClassLoader loader = new URLClassLoader(classPath.toArray(new URL[0])); Thread.currentThread().setContextClassLoader(loader); Class<?> mainClass = Class.forName(mainClassName, true, loader); Method main = mainClass.getMethod("main", new Class[] { Array.newInstance(String.class, 0).getClass() }); String[] newArgs = Arrays.asList(args).subList(firstArg, args.length).toArray(new String[0]); try { main.invoke(null, new Object[] { newArgs }); } catch (InvocationTargetException e) { throw e.getTargetException(); } }
From source file:net.minecraftforge.fml.common.patcher.GenDiffSet.java
public static void main(String[] args) throws IOException { String sourceJar = args[0]; //Clean Vanilla jar minecraft.jar or minecraft_server.jar String targetDir = args[1]; //Directory containing obfed output classes, typically mcp/reobf/minecraft String deobfData = args[2]; //Path to FML's deobfusication_data.lzma String outputDir = args[3]; //Path to place generated .binpatch String killTarget = args[4]; //"true" if we should destroy the target file if it generated a successful .binpatch LogManager.getLogger("GENDIFF").log(Level.INFO, String.format("Creating patches at %s for %s from %s", outputDir, sourceJar, targetDir)); Delta delta = new Delta(); FMLDeobfuscatingRemapper remapper = FMLDeobfuscatingRemapper.INSTANCE; remapper.setupLoadOnly(deobfData, false); JarFile sourceZip = new JarFile(sourceJar); boolean kill = killTarget.equalsIgnoreCase("true"); File f = new File(outputDir); f.mkdirs();//w w w. j av a2s . co m for (String name : remapper.getObfedClasses()) { // Logger.getLogger("GENDIFF").info(String.format("Evaluating path for data :%s",name)); String fileName = name; String jarName = name; if (RESERVED_NAMES.contains(name.toUpperCase(Locale.ENGLISH))) { fileName = "_" + name; } File targetFile = new File(targetDir, fileName.replace('/', File.separatorChar) + ".class"); jarName = jarName + ".class"; if (targetFile.exists()) { String sourceClassName = name.replace('/', '.'); String targetClassName = remapper.map(name).replace('/', '.'); JarEntry entry = sourceZip.getJarEntry(jarName); byte[] vanillaBytes = toByteArray(sourceZip, entry); byte[] patchedBytes = Files.toByteArray(targetFile); byte[] diff = delta.compute(vanillaBytes, patchedBytes); ByteArrayDataOutput diffOut = ByteStreams.newDataOutput(diff.length + 50); // Original name diffOut.writeUTF(name); // Source name diffOut.writeUTF(sourceClassName); // Target name diffOut.writeUTF(targetClassName); // exists at original diffOut.writeBoolean(entry != null); if (entry != null) { diffOut.writeInt(Hashing.adler32().hashBytes(vanillaBytes).asInt()); } // length of patch diffOut.writeInt(diff.length); // patch diffOut.write(diff); File target = new File(outputDir, targetClassName + ".binpatch"); target.getParentFile().mkdirs(); Files.write(diffOut.toByteArray(), target); Logger.getLogger("GENDIFF").info(String.format("Wrote patch for %s (%s) at %s", name, targetClassName, target.getAbsolutePath())); if (kill) { targetFile.delete(); Logger.getLogger("GENDIFF").info(String.format(" Deleted target: %s", targetFile.toString())); } } } sourceZip.close(); }
From source file:org.sonar.server.util.ClassLoaderUtils.java
private static void closeJar(@Nullable JarFile jar, String jarPath) { if (jar != null) { try {//from www . j a va 2 s. c o m jar.close(); } catch (Exception e) { Loggers.get(ClassLoaderUtils.class).error("Fail to close JAR file: " + jarPath, e); } } }
From source file:org.sonar.server.platform.ClassLoaderUtils.java
private static void closeJar(JarFile jar, String jarPath) { if (jar != null) { try {//from w ww .j a va2 s.c om jar.close(); } catch (Exception e) { Loggers.get(ClassLoaderUtils.class).error("Fail to close JAR file: " + jarPath, e); } } }
From source file:org.sonar.server.plugins.ClassLoaderUtils.java
private static void closeJar(JarFile jar, String jarPath) { if (jar != null) { try {//from w ww . j a va 2 s . c o m jar.close(); } catch (Exception e) { LoggerFactory.getLogger(ClassLoaderUtils.class).error("Fail to close JAR file: " + jarPath, e); } } }
From source file:net.fabricmc.installer.installer.LocalVersionInstaller.java
public static void installServer(File mcDir, IInstallerProgress progress) throws Exception { JFileChooser fc = new JFileChooser(); fc.setDialogTitle(Translator.getString("install.client.selectCustomJar")); fc.setFileFilter(new FileNameExtensionFilter("Jar Files", "jar")); if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File inputFile = fc.getSelectedFile(); JarFile jarFile = new JarFile(inputFile); Attributes attributes = jarFile.getManifest().getMainAttributes(); String fabricVersion = attributes.getValue("FabricVersion"); jarFile.close(); File fabricJar = new File(mcDir, "fabric-" + fabricVersion + ".jar"); if (fabricJar.exists()) { fabricJar.delete();/* ww w . j a v a2s . co m*/ } FileUtils.copyFile(inputFile, fabricJar); ServerInstaller.install(mcDir, fabricVersion, progress, fabricJar); } else { throw new Exception("Failed to find jar"); } }
From source file:io.fabric8.vertx.maven.plugin.utils.WebJars.java
/** * Checks whether the given file is a WebJar or not (http://www.webjars.org/documentation). * The check is based on the presence of {@literal META-INF/resources/webjars/} directory in the jar file. * * @param file the file./*from ww w . java2 s . c o m*/ * @return {@literal true} if it's a bundle, {@literal false} otherwise. */ public static boolean isWebJar(Log log, File file) { if (file == null) { return false; } Set<String> found = new LinkedHashSet<>(); if (file.isFile() && file.getName().endsWith(".jar")) { JarFile jar = null; try { jar = new JarFile(file); // Fast return if the base structure is not there if (jar.getEntry(WEBJAR_LOCATION) == null) { return false; } Enumeration<JarEntry> entries = jar.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); Matcher matcher = WEBJAR_REGEX.matcher(entry.getName()); if (matcher.matches()) { found.add(matcher.group(1) + "-" + matcher.group(2)); } } } catch (IOException e) { log.error("Cannot check if the file " + file.getName() + " is a webjar, cannot open it", e); return false; } finally { final JarFile finalJar = jar; IOUtils.closeQuietly(() -> { if (finalJar != null) { finalJar.close(); } }); } for (String lib : found) { log.info("Web Library found in " + file.getName() + " : " + lib); } return !found.isEmpty(); } return false; }