List of usage examples for java.util.jar JarEntry getName
public String getName()
From source file:org.reprap.configuration.store.ConfigurationInitializer.java
private static void copyJarTree(final URL source, final File target) throws IOException { final JarURLConnection jarConnection = (JarURLConnection) source.openConnection(); final String prefix = jarConnection.getEntryName(); final JarFile jarFile = jarConnection.getJarFile(); for (final JarEntry jarEntry : Collections.list(jarFile.entries())) { final String entryName = jarEntry.getName(); if (entryName.startsWith(prefix)) { if (!jarEntry.isDirectory()) { final String fileName = StringUtils.removeStart(entryName, prefix); final InputStream fileStream = jarFile.getInputStream(jarEntry); try { FileUtils.copyInputStreamToFile(fileStream, new File(target, fileName)); } finally { fileStream.close();/*from ww w .ja v a 2s . co m*/ } } } } }
From source file:JarUtils.java
/** * Add jar contents to the deployment archive under the given prefix *//* w w w.j av a 2 s . c om*/ public static String[] addJar(JarOutputStream outputStream, String prefix, File jar) throws IOException { ArrayList tmp = new ArrayList(); FileInputStream fis = new FileInputStream(jar); JarInputStream jis = new JarInputStream(fis); JarEntry entry = jis.getNextJarEntry(); while (entry != null) { if (entry.isDirectory() == false) { String entryName = prefix + entry.getName(); tmp.add(entryName); addJarEntry(outputStream, entryName, jis); } entry = jis.getNextJarEntry(); } jis.close(); String[] names = new String[tmp.size()]; tmp.toArray(names); return names; }
From source file:io.reactiverse.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 w w w.ja v a 2 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")) { try (JarFile 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; } for (String lib : found) { log.info("Web Library found in " + file.getName() + " : " + lib); } return !found.isEmpty(); } return false; }
From source file:org.jahia.modules.serversettings.portlets.BasePortletHelper.java
static JarEntry cloneEntry(JarEntry originalJarEntry) { final JarEntry newJarEntry = new JarEntry(originalJarEntry.getName()); newJarEntry.setComment(originalJarEntry.getComment()); newJarEntry.setExtra(originalJarEntry.getExtra()); newJarEntry.setMethod(originalJarEntry.getMethod()); newJarEntry.setTime(originalJarEntry.getTime()); // Must set size and CRC for STORED entries if (newJarEntry.getMethod() == ZipEntry.STORED) { newJarEntry.setSize(originalJarEntry.getSize()); newJarEntry.setCrc(originalJarEntry.getCrc()); }// w w w . j av a2s . c o m return newJarEntry; }
From source file:org.commonjava.web.test.fixture.JarKnockouts.java
public static File rewriteJar(final File source, final File targetDir, final Set<JarKnockouts> jarKnockouts) throws IOException { final JarKnockouts allKnockouts = new JarKnockouts(); for (final JarKnockouts jk : jarKnockouts) { allKnockouts.knockoutPaths(jk.getKnockedOutPaths()); }/*from w w w . j a v a 2 s .com*/ targetDir.mkdirs(); final File target = new File(targetDir, source.getName()); JarFile in = null; JarOutputStream out = null; try { in = new JarFile(source); final BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(target)); out = new JarOutputStream(fos, in.getManifest()); final Enumeration<JarEntry> entries = in.entries(); while (entries.hasMoreElements()) { final JarEntry entry = entries.nextElement(); if (!allKnockouts.knockout(entry.getName())) { final InputStream stream = in.getInputStream(entry); out.putNextEntry(entry); copy(stream, out); out.closeEntry(); } } } finally { closeQuietly(out); if (in != null) { try { in.close(); } catch (final IOException e) { } } } return target; }
From source file:Main.java
public static List<Class<?>> getClassesForPackage(final String iPackageName, final ClassLoader iClassLoader) throws ClassNotFoundException { // This will hold a list of directories matching the pckgname. // There may be more than one if a package is split over multiple jars/paths List<Class<?>> classes = new ArrayList<Class<?>>(); ArrayList<File> directories = new ArrayList<File>(); try {// w w w. ja v a 2 s . c o m // Ask for all resources for the path final String packageUrl = iPackageName.replace('.', '/'); Enumeration<URL> resources = iClassLoader.getResources(packageUrl); if (!resources.hasMoreElements()) { resources = iClassLoader.getResources(packageUrl + CLASS_EXTENSION); if (resources.hasMoreElements()) { throw new IllegalArgumentException( iPackageName + " does not appear to be a valid package but a class"); } } else { while (resources.hasMoreElements()) { URL res = resources.nextElement(); if (res.getProtocol().equalsIgnoreCase("jar")) { JarURLConnection conn = (JarURLConnection) res.openConnection(); JarFile jar = conn.getJarFile(); for (JarEntry e : Collections.list(jar.entries())) { if (e.getName().startsWith(iPackageName.replace('.', '/')) && e.getName().endsWith(CLASS_EXTENSION) && !e.getName().contains("$")) { String className = e.getName().replace("/", ".").substring(0, e.getName().length() - 6); classes.add(Class.forName(className)); } } } else directories.add(new File(URLDecoder.decode(res.getPath(), "UTF-8"))); } } } catch (NullPointerException x) { throw new ClassNotFoundException( iPackageName + " does not appear to be " + "a valid package (Null pointer exception)"); } catch (UnsupportedEncodingException encex) { throw new ClassNotFoundException( iPackageName + " does not appear to be " + "a valid package (Unsupported encoding)"); } catch (IOException ioex) { throw new ClassNotFoundException( "IOException was thrown when trying " + "to get all resources for " + iPackageName); } // For every directory identified capture all the .class files for (File directory : directories) { if (directory.exists()) { // Get the list of the files contained in the package File[] files = directory.listFiles(); for (File file : files) { if (file.isDirectory()) { classes.addAll(findClasses(file, iPackageName)); } else { String className; if (file.getName().endsWith(CLASS_EXTENSION)) { className = file.getName().substring(0, file.getName().length() - CLASS_EXTENSION.length()); classes.add(Class.forName(iPackageName + '.' + className)); } } } } else { throw new ClassNotFoundException( iPackageName + " (" + directory.getPath() + ") does not appear to be a valid package"); } } return classes; }
From source file:net.sourceforge.lept4j.util.LoadLibs.java
/** * Copies resources from the jar file of the current thread and extract it * to the destination directory.//from w w w . j a v a 2s. c om * * @param jarConnection * @param destDir */ static void copyJarResourceToDirectory(JarURLConnection jarConnection, File destDir) { try { JarFile jarFile = jarConnection.getJarFile(); String jarConnectionEntryName = jarConnection.getEntryName() + "/"; /** * Iterate all entries in the jar file. */ for (Enumeration<JarEntry> e = jarFile.entries(); e.hasMoreElements();) { JarEntry jarEntry = e.nextElement(); String jarEntryName = jarEntry.getName(); /** * Extract files only if they match the path. */ if (jarEntryName.startsWith(jarConnectionEntryName)) { String filename = jarEntryName.substring(jarConnectionEntryName.length()); File currentFile = new File(destDir, filename); if (jarEntry.isDirectory()) { currentFile.mkdirs(); } else { currentFile.deleteOnExit(); InputStream is = jarFile.getInputStream(jarEntry); OutputStream out = FileUtils.openOutputStream(currentFile); IOUtils.copy(is, out); is.close(); out.close(); } } } } catch (IOException e) { logger.log(Level.WARNING, e.getMessage(), e); } }
From source file:org.phenotips.variantstore.shared.ResourceManager.java
/** * Copy resources recursively from a folder specified by source in a jar file specified by jarPath * to a destination folder on the filesystem dest. * * @param jarPath the jar file// ww w .j a v a2 s.c om * @param source the folder on the filesystem * @param dest the destination * @throws IOException */ private static void copyResourcesFromJar(Path jarPath, Path source, Path dest) throws IOException { JarFile jar = new JarFile(jarPath.toFile()); for (JarEntry entry : Collections.list(jar.entries())) { if (entry.getName().startsWith(source.toString())) { if (entry.isDirectory()) { Files.createDirectory(dest.resolve(entry.getName())); } else { Files.copy(jar.getInputStream(entry), dest.resolve(entry.getName())); } } } }
From source file:eu.leads.processor.planner.ClassUtil.java
private static void findClasses(Set<Class> matchedClassSet, File root, File file, boolean includeJars, Class type, String packageFilter) { if (file.isDirectory()) { for (File child : file.listFiles()) { findClasses(matchedClassSet, root, child, includeJars, type, packageFilter); }/* w w w. ja va 2s.co m*/ } else { if (file.getName().toLowerCase().endsWith(".jar") && includeJars) { JarFile jar = null; try { jar = new JarFile(file); } catch (Exception ex) { LOG.error(ex.getMessage(), ex); return; } Enumeration<JarEntry> entries = jar.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); String name = entry.getName(); int extIndex = name.lastIndexOf(".class"); if (extIndex > 0) { String qualifiedClassName = name.substring(0, extIndex).replace("/", "."); if (qualifiedClassName.indexOf(packageFilter) >= 0 && !isTestClass(qualifiedClassName)) { try { Class clazz = Class.forName(qualifiedClassName); if (!clazz.isInterface() && isMatch(type, clazz)) { matchedClassSet.add(clazz); } } catch (ClassNotFoundException e) { LOG.error(e.getMessage(), e); } } } } } else if (file.getName().toLowerCase().endsWith(".class")) { String qualifiedClassName = createClassName(root, file); // if (qualifiedClassName.indexOf(packageFilter) >= 0 && !isTestClass(qualifiedClassName)) { try { Class clazz = Class.forName(qualifiedClassName); if (!clazz.isInterface() && isMatch(type, clazz)) { matchedClassSet.add(clazz); } } catch (ClassNotFoundException e) { LOG.error(e.getMessage(), e); } // } } } }
From source file:com.wordnik.swagger.codegen.util.FileUtil.java
public static boolean copyJarResourcesRecursively(final File destDir, final JarURLConnection jarConnection) throws IOException { final JarFile jarFile = jarConnection.getJarFile(); for (final Enumeration<JarEntry> e = jarFile.entries(); e.hasMoreElements();) { final JarEntry entry = e.nextElement(); if (entry.getName().startsWith(jarConnection.getEntryName())) { final String filename = StringUtils.removeStart(entry.getName(), // jarConnection.getEntryName()); final File f = new File(destDir, filename); if (!entry.isDirectory()) { final InputStream entryInputStream = jarFile.getInputStream(entry); if (!FileUtil.copyStream(entryInputStream, f)) { return false; }// ww w .j a v a 2 s .co m entryInputStream.close(); } else { if (!FileUtil.ensureDirectoryExists(f)) { throw new IOException("Could not create directory: " + f.getAbsolutePath()); } } } } return true; }