protected static ArrayList getManifestClassPaths(Manifest manifest, String archivePath) { ArrayList pathList = new ArrayList(); Attributes main = manifest.getMainAttributes(); String classPath = main.getValue(Attributes.Name.CLASS_PATH); if (classPath != null) { StringTokenizer st = new StringTokenizer(classPath, " "); //$NON-NLS-1$ while (st.hasMoreTokens()) { String token = st.nextToken(); String path = archivePath + File.separator + token; path = normalizePath(path); if (new File(path).exists()) { pathList.add(createRuntimeClasspathEntry(path, token)); } } } return pathList; }
public static void processManifest(String inPath, List rtClasspath, Set processedPaths) { ArrayList paths = getManifestPaths(inPath); for (int i = 0; i < paths.size(); i++) { RuntimeClasspathEntry entry = (RuntimeClasspathEntry) paths.get(i); if (!processedPaths.contains(entry)) { processedPaths.add(entry); rtClasspath.add(entry); processManifest(entry.getAbsolutePath(), rtClasspath, processedPaths); } } }
inputStream = new FileInputStream(manifestFile); Manifest manifest = new Manifest(inputStream); manifestPaths = getManifestClassPaths(manifest, f.getParent()); } catch (IOException e) { Manifest manifest = jarFile.getManifest(); if (manifest != null) manifestPaths = getManifestClassPaths(manifest, f.getParent()); } catch (IOException e) {
protected void getDependencyClassPath(Set visitedArchives, List entries, Set processedEntries, Archive current) { RuntimeClasspathEntry[] local = ((ArchiveImpl) current).getDependencyClassPathAtThisLevel(); for (int i = 0; i < local.length; i++) { RuntimeClasspathEntry entry = local[i]; if (!processedEntries.contains(entry)) { entries.add(entry); processedEntries.add(entry); } Archive resolved = entry.getReferencedArchive(); if (resolved == null) ClasspathUtil.processManifest(entry.getAbsolutePath(), entries, processedEntries); else if (!visitedArchives.contains(resolved)) { visitedArchives.add(resolved); getDependencyClassPath(visitedArchives, entries, processedEntries, resolved); } } }
else { absPath = ArchiveUtil.getOSUri(parentPath, entry); absPath = ClasspathUtil.normalizePath(absPath);