Java 类java.util.jar.JarInputStream 实例源码
项目:mithril
文件:Application.java
public static Application readJar(Path path) throws IOException {
Application application = new Application();
try (JarInputStream in = new JarInputStream(new BufferedInputStream(Files.newInputStream(path)))) {
JarEntry entry;
while ((entry = in.getNextJarEntry()) != null) {
String name = entry.getName();
if (!name.endsWith(".class")) continue;
name = name.replaceAll(".class$", "");
ClassNode node = new ClassNode();
ClassReader reader = new ClassReader(in);
reader.accept(node, ClassReader.SKIP_DEBUG);
application.classes.put(name, node);
}
}
return application;
}
项目:etomica
文件:Lister.java
/**
* Store all class names found in this jar file
*/
private static LinkedList<String> processJar(File jarfile, String basepath) {
// System.out.println("Processing JAR " + jarfile.getPath());
LinkedList<String> addlist = new LinkedList<String>();
try {
JarInputStream jarIS = new JarInputStream(new FileInputStream(
jarfile));
JarEntry entry = null;
while ((entry = jarIS.getNextJarEntry()) != null) {
String name = entry.getName();
if (name.endsWith(".class")) {
// System.out.println( entry.getAttributes().toString() );
if (!add(name, jarfile.getPath(), basepath).isEmpty())
addlist.addAll(add(name, jarfile.getPath(), basepath));
}
}
} catch (Exception e) {
}
return addlist;
}
项目:hadoop-oss
文件:TestJarFinder.java
@Test
public void testNoManifest() throws Exception {
File dir = new File(System.getProperty("test.build.dir", "target/test-dir"),
TestJarFinder.class.getName() + "-testNoManifest");
delete(dir);
dir.mkdirs();
File propsFile = new File(dir, "props.properties");
Writer writer = new FileWriter(propsFile);
new Properties().store(writer, "");
writer.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JarOutputStream zos = new JarOutputStream(baos);
JarFinder.jarDir(dir, "", zos);
JarInputStream jis =
new JarInputStream(new ByteArrayInputStream(baos.toByteArray()));
Assert.assertNotNull(jis.getManifest());
jis.close();
}
项目:syndesis
文件:ExtensionAnalyzer.java
@SuppressWarnings("PMD.EmptyCatchBlock")
private InputStream readManifest(InputStream binaryExtension) throws IOException {
JarInputStream jar = new JarInputStream(binaryExtension);
try {
JarEntry entry;
do {
entry = jar.getNextJarEntry();
if (entry != null && MANIFEST_LOCATION.equals(entry.getName())) {
return jar;
}
} while (entry != null);
jar.close();
return null;
} catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") Exception e) {
try {
jar.close();
} catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") Exception ex2) {
// ignore
}
throw SyndesisServerException.launderThrowable(e);
}
}
项目:gate-core
文件:Plugin.java
protected void scanJar(URL jarUrl, Map<String, ResourceInfo> resInfos) throws IOException {
JarInputStream jarInput = new JarInputStream(jarUrl.openStream(), false);
JarEntry entry = null;
while((entry = jarInput.getNextJarEntry()) != null) {
String entryName = entry.getName();
if(entryName != null && entryName.endsWith(".class")) {
final String className = entryName.substring(0,
entryName.length() - 6).replace('/', '.');
if(!resInfos.containsKey(className)) {
ClassReader classReader = new ClassReader(jarInput);
ResourceInfo resInfo = new ResourceInfo(null, className, null);
ResourceInfoVisitor visitor = new ResourceInfoVisitor(resInfo);
classReader.accept(visitor, ClassReader.SKIP_CODE |
ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES);
if(visitor.isCreoleResource()) {
resInfos.put(className, resInfo);
}
}
}
}
jarInput.close();
}
项目:gemini.blueprint
文件:BundleClassPathTest.java
public void tstConnectionToJarOnClassPath() throws Exception {
URL url = bundle.getEntry("bundleclasspath/simple.jar");
System.out.println("jar url is " + url);
URLConnection con = url.openConnection();
System.out.println(con);
System.out.println(con.getContentType());
InputStream stream = con.getInputStream();
JarInputStream jis = new JarInputStream(stream);
System.out.println(jis);
System.out.println(jis.available());
System.out.println(jis.getNextJarEntry());
System.out.println(jis.getNextJarEntry());
System.out.println(jis.getNextJarEntry());
System.out.println(jis.available());
System.out.println(jis.getNextJarEntry());
System.out.println(jis.available());
jis.close();
}
项目:gemini.blueprint
文件:JarUtils.java
/**
* Dumps the entries of a jar and return them as a String. This method can
* be memory expensive depending on the jar size.
*
* @param jis
* @return
* @throws Exception
*/
public static String dumpJarContent(JarInputStream jis) {
StringBuilder buffer = new StringBuilder();
try {
JarEntry entry;
while ((entry = jis.getNextJarEntry()) != null) {
buffer.append(entry.getName());
buffer.append("\n");
}
}
catch (IOException ioException) {
buffer.append("reading from stream failed");
}
finally {
closeStream(jis);
}
return buffer.toString();
}
项目:cf-mta-deploy-service
文件:MtaArchiveBuilderTest.java
private void assertExistingJarFile(Path mtaArchiveFile, String fileName, String expectedContent) throws Exception {
try (JarInputStream in = new JarInputStream(Files.newInputStream(mtaArchiveFile))) {
for (ZipEntry e; (e = in.getNextEntry()) != null;) {
if (fileName.equals(e.getName()) && !e.isDirectory()) {
StringBuilder textBuilder = new StringBuilder();
try (Reader reader = new BufferedReader(new InputStreamReader(in))) {
int c = 0;
while ((c = reader.read()) != -1) {
textBuilder.append((char) c);
}
}
assertEquals(expectedContent, textBuilder.toString());
return;
}
}
throw new AssertionError(MessageFormat.format("Zip archive file \"{0}\" could not be found", fileName));
}
}
项目:OpenJSharp
文件:PackerImpl.java
/**
* Takes a JarInputStream and converts into a pack-stream.
* <p>
* Closes its input but not its output. (Pack200 archives are appendable.)
* <p>
* The modification time and deflation hint attributes are not available,
* for the jar-manifest file and the directory containing the file.
*
* @see #MODIFICATION_TIME
* @see #DEFLATION_HINT
* @param in a JarInputStream
* @param out an OutputStream
* @exception IOException if an error is encountered.
*/
public synchronized void pack(JarInputStream in, OutputStream out) throws IOException {
assert(Utils.currentInstance.get() == null);
TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) ? null :
TimeZone.getDefault();
try {
Utils.currentInstance.set(this);
if (tz != null) TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
if ("0".equals(props.getProperty(Pack200.Packer.EFFORT))) {
Utils.copyJarFile(in, out);
} else {
(new DoPack()).run(in, out);
}
} finally {
Utils.currentInstance.set(null);
if (tz != null) TimeZone.setDefault(tz);
in.close();
}
}
项目:OpenJSharp
文件:Utils.java
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
if (in.getManifest() != null) {
ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
out.putNextEntry(me);
in.getManifest().write(out);
out.closeEntry();
}
byte[] buffer = new byte[1 << 14];
for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
out.putNextEntry(je);
for (int nr; 0 < (nr = in.read(buffer)); ) {
out.write(buffer, 0, nr);
}
}
in.close();
markJarFile(out); // add PACK200 comment
}
项目:OperatieBRP
文件:TimestampMojo.java
private Set<String> pakArchiefBestandUit(final Path tmpFolder) {
getLog().debug("Unpacking artifact");
Set<String> keys = new TreeSet<>();
try (final JarInputStream archiefStream = new JarInputStream(new FileInputStream(artifact + ".bak"))) {
final List<String> bestanden = new ArrayList<>();
JarEntry archiefItem = archiefStream.getNextJarEntry();
while (archiefItem != null) {
final File archiefBestand = new File(tmpFolder.toFile(), archiefItem.getName());
if (archiefItem.isDirectory()) {
archiefBestand.mkdirs();
} else {
pakBestandUit(archiefStream, archiefBestand);
}
bestanden.add(archiefItem.getName());
archiefStream.closeEntry();
archiefItem = archiefStream.getNextJarEntry();
}
pakManifestUit(tmpFolder, archiefStream, bestanden);
keys.addAll(bestanden);
} catch (IOException | WrappedException e) {
getLog().debug("Artifact cannot be fixed", e);
}
return keys;
}
项目:OperatieBRP
文件:TimestampMojo.java
private void pakBestandUit(final JarInputStream archiefStream, final File archiefBestand) throws IOException {
final File parentBestand =
new File(archiefBestand.getAbsolutePath().substring(0, archiefBestand.getAbsolutePath().lastIndexOf(File.separator)));
parentBestand.mkdirs();
if (archiefBestand.createNewFile()) {
try (final FileOutputStream fos = new FileOutputStream(archiefBestand);
final BufferedOutputStream bos = new BufferedOutputStream(fos)) {
int len;
byte[] buffer = new byte[BUFFER_SIZE];
while ((len = archiefStream.read(buffer)) > 0) {
bos.write(buffer, 0, len);
}
bos.flush();
}
}
}
项目:anvil
文件:Publicizer.java
private static void publicize(Path inPath, Path outPath) throws IOException {
try (JarInputStream in = new JarInputStream(Files.newInputStream(inPath))) {
try (JarOutputStream out = new JarOutputStream(Files.newOutputStream(outPath))) {
JarEntry entry;
while ((entry = in.getNextJarEntry()) != null) {
if (entry.isDirectory()) {
continue;
}
String name = entry.getName();
out.putNextEntry(new JarEntry(name));
if (name.endsWith(".class")) {
ClassWriter writer = new ClassWriter(0);
ClassReader reader = new ClassReader(in);
reader.accept(new CheckClassAdapter(new ClassDefinalizer(new ClassPublicizer(writer)), true), 0);
out.write(writer.toByteArray());
} else {
ByteStreams.copy(in, out);
}
}
}
}
}
项目:hadoop
文件:TestJarFinder.java
@Test
public void testNoManifest() throws Exception {
File dir = new File(System.getProperty("test.build.dir", "target/test-dir"),
TestJarFinder.class.getName() + "-testNoManifest");
delete(dir);
dir.mkdirs();
File propsFile = new File(dir, "props.properties");
Writer writer = new FileWriter(propsFile);
new Properties().store(writer, "");
writer.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JarOutputStream zos = new JarOutputStream(baos);
JarFinder.jarDir(dir, "", zos);
JarInputStream jis =
new JarInputStream(new ByteArrayInputStream(baos.toByteArray()));
Assert.assertNotNull(jis.getManifest());
jis.close();
}
项目:jdk8u-jdk
文件:PackerImpl.java
/**
* Takes a JarInputStream and converts into a pack-stream.
* <p>
* Closes its input but not its output. (Pack200 archives are appendable.)
* <p>
* The modification time and deflation hint attributes are not available,
* for the jar-manifest file and the directory containing the file.
*
* @see #MODIFICATION_TIME
* @see #DEFLATION_HINT
* @param in a JarInputStream
* @param out an OutputStream
* @exception IOException if an error is encountered.
*/
public synchronized void pack(JarInputStream in, OutputStream out) throws IOException {
assert (Utils.currentInstance.get() == null);
boolean needUTC = !props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE);
try {
Utils.currentInstance.set(this);
if (needUTC) {
Utils.changeDefaultTimeZoneToUtc();
}
if ("0".equals(props.getProperty(Pack200.Packer.EFFORT))) {
Utils.copyJarFile(in, out);
} else {
(new DoPack()).run(in, out);
}
} finally {
Utils.currentInstance.set(null);
if (needUTC) {
Utils.restoreDefaultTimeZone();
}
in.close();
}
}
项目:jdk8u-jdk
文件:Utils.java
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
if (in.getManifest() != null) {
ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
out.putNextEntry(me);
in.getManifest().write(out);
out.closeEntry();
}
byte[] buffer = new byte[1 << 14];
for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
out.putNextEntry(je);
for (int nr; 0 < (nr = in.read(buffer)); ) {
out.write(buffer, 0, nr);
}
}
in.close();
markJarFile(out); // add PACK200 comment
}
项目:jdk8u-jdk
文件:TestIndexedJarWithBadSignature.java
public static void main(String...args) throws Throwable {
try (JarInputStream jis = new JarInputStream(
new FileInputStream(System.getProperty("test.src", ".") +
System.getProperty("file.separator") +
"BadSignedJar.jar")))
{
JarEntry je1 = jis.getNextJarEntry();
while(je1!=null){
System.out.println("Jar Entry1==>"+je1.getName());
je1 = jis.getNextJarEntry(); // This should throw Security Exception
}
throw new RuntimeException(
"Test Failed:Security Exception not being thrown");
} catch (IOException ie){
ie.printStackTrace();
} catch (SecurityException e) {
System.out.println("Test passed: Security Exception thrown as expected");
}
}
项目:openjdk-jdk10
文件:Utils.java
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
if (in.getManifest() != null) {
ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
out.putNextEntry(me);
in.getManifest().write(out);
out.closeEntry();
}
byte[] buffer = new byte[1 << 14];
for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
out.putNextEntry(je);
for (int nr; 0 < (nr = in.read(buffer)); ) {
out.write(buffer, 0, nr);
}
}
in.close();
markJarFile(out); // add PACK200 comment
}
项目:openjdk-jdk10
文件:TestIndexedJarWithBadSignature.java
public static void main(String...args) throws Throwable {
try (JarInputStream jis = new JarInputStream(
new FileInputStream(System.getProperty("test.src", ".") +
System.getProperty("file.separator") +
"BadSignedJar.jar")))
{
JarEntry je1 = jis.getNextJarEntry();
while(je1!=null){
System.out.println("Jar Entry1==>"+je1.getName());
je1 = jis.getNextJarEntry(); // This should throw Security Exception
}
throw new RuntimeException(
"Test Failed:Security Exception not being thrown");
} catch (IOException ie){
ie.printStackTrace();
} catch (SecurityException e) {
System.out.println("Test passed: Security Exception thrown as expected");
}
}
项目:openjdk-jdk10
文件:JImageGenerator.java
public static Path addFiles(Path module, InMemoryFile... resources) throws IOException {
Path tempFile = Files.createTempFile("jlink-test", "");
try (JarInputStream in = new JarInputStream(Files.newInputStream(module));
JarOutputStream out = new JarOutputStream(new FileOutputStream(tempFile.toFile()))) {
ZipEntry entry;
while ((entry = in.getNextEntry()) != null) {
String name = entry.getName();
out.putNextEntry(new ZipEntry(name));
copy(in, out);
out.closeEntry();
}
for (InMemoryFile r : resources) {
addFile(r, out);
}
}
Files.move(tempFile, module, StandardCopyOption.REPLACE_EXISTING);
return module;
}
项目:io-command
文件:ClasspathPackageScanner.java
@SuppressWarnings("resource")
private List<String> readFromJarFile(String jarPath, String splashedPackageName) throws IOException {
if (logger.isDebugEnabled()) {
logger.debug("从JAR包中读取类: {}", jarPath);
}
JarInputStream jarIn = new JarInputStream(new FileInputStream(jarPath));
JarEntry entry = jarIn.getNextJarEntry();
List<String> nameList = new ArrayList<>();
while (null != entry) {
String name = entry.getName();
if (name.startsWith(splashedPackageName) && isClassFile(name)) {
nameList.add(name);
}
entry = jarIn.getNextJarEntry();
}
return nameList;
}
项目:ditb
文件:TestJarFinder.java
@Test
public void testNoManifest() throws Exception {
File dir = new File(System.getProperty("test.build.dir", "target/test-dir"),
TestJarFinder.class.getName() + "-testNoManifest");
delete(dir);
dir.mkdirs();
File propsFile = new File(dir, "props.properties");
Writer writer = new FileWriter(propsFile);
new Properties().store(writer, "");
writer.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JarOutputStream zos = new JarOutputStream(baos);
JarFinder.jarDir(dir, "", zos);
JarInputStream jis =
new JarInputStream(new ByteArrayInputStream(baos.toByteArray()));
Assert.assertNotNull(jis.getManifest());
jis.close();
}
项目:intellij-ce-playground
文件:ClassPath.java
public static String[] loadManifestClasspath(File file) {
try {
JarInputStream inputStream = new JarInputStream(new FileInputStream(file));
try {
final Manifest manifest = inputStream.getManifest();
if (manifest != null) {
final String classPath = manifest.getMainAttributes().getValue(Attributes.Name.CLASS_PATH);
if (classPath != null) {
return classPath.split(" ");
}
}
}
finally {
inputStream.close();
}
}
catch (Exception ignore) { }
return null;
}
项目:openjdk9
文件:Utils.java
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
if (in.getManifest() != null) {
ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
out.putNextEntry(me);
in.getManifest().write(out);
out.closeEntry();
}
byte[] buffer = new byte[1 << 14];
for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
out.putNextEntry(je);
for (int nr; 0 < (nr = in.read(buffer)); ) {
out.write(buffer, 0, nr);
}
}
in.close();
markJarFile(out); // add PACK200 comment
}
项目:openjdk9
文件:TestIndexedJarWithBadSignature.java
public static void main(String...args) throws Throwable {
try (JarInputStream jis = new JarInputStream(
new FileInputStream(System.getProperty("test.src", ".") +
System.getProperty("file.separator") +
"BadSignedJar.jar")))
{
JarEntry je1 = jis.getNextJarEntry();
while(je1!=null){
System.out.println("Jar Entry1==>"+je1.getName());
je1 = jis.getNextJarEntry(); // This should throw Security Exception
}
throw new RuntimeException(
"Test Failed:Security Exception not being thrown");
} catch (IOException ie){
ie.printStackTrace();
} catch (SecurityException e) {
System.out.println("Test passed: Security Exception thrown as expected");
}
}
项目:openjdk9
文件:Basic.java
@Test
public void createFoo() throws IOException {
Path mp = Paths.get("createFoo");
createTestDir(mp);
Path modClasses = MODULE_CLASSES.resolve(FOO.moduleName);
Path modularJar = mp.resolve(FOO.moduleName + ".jar");
jar("--create",
"--file=" + modularJar.toString(),
"--main-class=" + FOO.mainClass,
"--module-version=" + FOO.version,
"--no-manifest",
"-C", modClasses.toString(), ".")
.assertSuccess();
java(mp, FOO.moduleName + "/" + FOO.mainClass)
.assertSuccess()
.resultChecker(r -> assertModuleData(r, FOO));
try (InputStream fis = Files.newInputStream(modularJar);
JarInputStream jis = new JarInputStream(fis)) {
assertTrue(!jarContains(jis, "./"),
"Unexpected ./ found in ", modularJar.toString());
}
}
项目:openjdk9
文件:JImageGenerator.java
public static Path addFiles(Path module, InMemoryFile... resources) throws IOException {
Path tempFile = Files.createTempFile("jlink-test", "");
try (JarInputStream in = new JarInputStream(Files.newInputStream(module));
JarOutputStream out = new JarOutputStream(new FileOutputStream(tempFile.toFile()))) {
ZipEntry entry;
while ((entry = in.getNextEntry()) != null) {
String name = entry.getName();
out.putNextEntry(new ZipEntry(name));
copy(in, out);
out.closeEntry();
}
for (InMemoryFile r : resources) {
addFile(r, out);
}
}
Files.move(tempFile, module, StandardCopyOption.REPLACE_EXISTING);
return module;
}
项目:aliyun-oss-hadoop-fs
文件:TestJarFinder.java
@Test
public void testNoManifest() throws Exception {
File dir = new File(System.getProperty("test.build.dir", "target/test-dir"),
TestJarFinder.class.getName() + "-testNoManifest");
delete(dir);
dir.mkdirs();
File propsFile = new File(dir, "props.properties");
Writer writer = new FileWriter(propsFile);
new Properties().store(writer, "");
writer.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JarOutputStream zos = new JarOutputStream(baos);
JarFinder.jarDir(dir, "", zos);
JarInputStream jis =
new JarInputStream(new ByteArrayInputStream(baos.toByteArray()));
Assert.assertNotNull(jis.getManifest());
jis.close();
}
项目:libraries
文件:ClassLoaderUtilities.java
public static Manifest getManifest(final URI uri) {
if (uri == null) {
return null;
}
Manifest manifest;
if ((manifest = manifests.get(uri)) != null) {
return manifest;
}
try (JarInputStream jarInputStream = new JarInputStream(uri.toURL().openStream())) {
if ((manifest = jarInputStream.getManifest()) != null) {
manifests.put(uri, manifest);
}
return manifest;
} catch (final IOException exception) {
return null;
}
}
项目:codePay
文件:ReflectionUtils.java
/**
* 从jar包中加载class
* @param loader
* @param jar
* @param packageName
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
private static Set<Class<?>> getFromJARFile(final ClassLoader loader, final String jar, final String packageName)
throws IOException, ClassNotFoundException {
final Set<Class<?>> classes = new HashSet<Class<?>>();
final JarInputStream jarFile = new JarInputStream(new FileInputStream(jar));
try {
JarEntry jarEntry;
do {
jarEntry = jarFile.getNextJarEntry();
if (jarEntry != null) {
String className = jarEntry.getName();
if (className.endsWith(".class") && getPackageName(className).equals(packageName)) {
className = stripFilenameExtension(className);
classes.add(Class.forName(className.replace('/', '.'), true, loader));
}
}
} while (jarEntry != null);
} finally {
jarFile.close();
}
return classes;
}
项目:Despector
文件:JarWalker.java
private void scanJar(Path path, SourceSet src, Decompiler decomp) {
try (JarInputStream jar = new JarInputStream(new BufferedInputStream(Files.newInputStream(path)))) {
ZipEntry entry = jar.getNextEntry();
if (entry == null) {
return;
}
do {
if (entry.isDirectory()) {
continue;
}
final String name = entry.getName();
if (!name.endsWith(".class")) {
continue;
}
scanClassFile(jar, src, decomp);
} while ((entry = jar.getNextEntry()) != null);
} catch (IOException e) {
e.printStackTrace();
return;
}
}
项目:beyondj
文件:DefaultVFS.java
/**
* List the names of the entries in the given {@link JarInputStream} that begin with the
* specified {@code path}. Entries will match with or without a leading slash.
*
* @param jar The JAR input stream
* @param path The leading path to match
* @return The names of all the matching entries
* @throws IOException If I/O errors occur
*/
protected List<String> listResources(JarInputStream jar, String path) throws IOException {
// Include the leading and trailing slash when matching names
if (!path.startsWith("/"))
path = "/" + path;
if (!path.endsWith("/"))
path = path + "/";
// Iterate over the entries and collect those that begin with the requested path
List<String> resources = new ArrayList<String>();
for (JarEntry entry; (entry = jar.getNextJarEntry()) != null;) {
if (!entry.isDirectory()) {
// Add leading slash if it's missing
String name = entry.getName();
if (!name.startsWith("/"))
name = "/" + name;
// Check file name
if (name.startsWith(path)) {
log.trace("Found resource: ", name);
resources.add(name.substring(1)); // Trim leading slash
}
}
}
return resources;
}
项目:intellij-ce-playground
文件:CommandLineWrapper.java
private static MainPair loadMainClassFromClasspathJar(File jarFile, String[] args) throws Exception {
final JarInputStream inputStream = new JarInputStream(new FileInputStream(jarFile));
try {
final Manifest manifest = inputStream.getManifest();
final String vmParams = manifest.getMainAttributes().getValue("VM-Options");
if (vmParams != null) {
final HashMap vmOptions = new HashMap();
parseVmOptions(vmParams, vmOptions);
for (Iterator iterator = vmOptions.keySet().iterator(); iterator.hasNext(); ) {
String optionName = (String)iterator.next();
System.setProperty(optionName, (String)vmOptions.get(optionName));
}
}
}
finally {
if (inputStream != null) {
inputStream.close();
}
jarFile.deleteOnExit();
}
return new MainPair(Class.forName(args[1]), new String[args.length - 2]);
}
项目:PhET
文件:JarUtils.java
/**
* Reads a properties file from a jar.
*
* @param jarFileName
* @param fileName
* @return Properties
* @throws IOException
*/
public static Properties readProperties( String jarFileName, String fileName ) throws IOException, FileNotFoundException {
// open the jar file
JarInputStream jarInputStream = openJar( jarFileName );
// look for the properties file
JarEntry jarEntry = getJarEntry( jarInputStream, fileName );
// read the properties file into a Properties object
Properties properties = null;
if ( jarEntry != null ) {
properties = new Properties();
properties.load( jarInputStream );
}
else {
throw new FileNotFoundException( "file not found: " + fileName );
}
// close the jar file
jarInputStream.close();
return properties;
}
项目:twill
文件:ApplicationBundlerTest.java
private void unjar(File jarFile, File targetDir) throws IOException {
try (JarInputStream jarInput = new JarInputStream(new FileInputStream(jarFile))) {
JarEntry jarEntry = jarInput.getNextJarEntry();
while (jarEntry != null) {
File target = new File(targetDir, jarEntry.getName());
if (jarEntry.isDirectory()) {
target.mkdirs();
} else {
target.getParentFile().mkdirs();
ByteStreams.copy(jarInput, Files.newOutputStreamSupplier(target));
}
jarEntry = jarInput.getNextJarEntry();
}
}
}
项目:big-c
文件:TestJarFinder.java
@Test
public void testNoManifest() throws Exception {
File dir = new File(System.getProperty("test.build.dir", "target/test-dir"),
TestJarFinder.class.getName() + "-testNoManifest");
delete(dir);
dir.mkdirs();
File propsFile = new File(dir, "props.properties");
Writer writer = new FileWriter(propsFile);
new Properties().store(writer, "");
writer.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JarOutputStream zos = new JarOutputStream(baos);
JarFinder.jarDir(dir, "", zos);
JarInputStream jis =
new JarInputStream(new ByteArrayInputStream(baos.toByteArray()));
Assert.assertNotNull(jis.getManifest());
jis.close();
}
项目:cosmic
文件:OnwireClassRegistry.java
static Set<Class<?>> getFromJARFile(final String jar, final String packageName) throws IOException, ClassNotFoundException {
final Set<Class<?>> classes = new HashSet<>();
try (JarInputStream jarFile = new JarInputStream(new FileInputStream(jar))) {
JarEntry jarEntry;
do {
jarEntry = jarFile.getNextJarEntry();
if (jarEntry != null) {
String className = jarEntry.getName();
if (className.endsWith(".class")) {
className = stripFilenameExtension(className);
if (className.startsWith(packageName)) {
try {
final Class<?> clz = Class.forName(className.replace('/', '.'));
classes.add(clz);
} catch (ClassNotFoundException | NoClassDefFoundError e) {
s_logger.warn("Unable to load class from jar file", e);
}
}
}
}
} while (jarEntry != null);
return classes;
}
}
项目:bd-codes
文件:JarUtil.java
public static List<String> listResources(JarInputStream jis, String path) throws Exception {
List<String> res = Lists.newArrayList();
if (!path.startsWith("/")) {
path = "/" + path;
}
if (!path.endsWith("/")) {
path = path + "/";
}
System.out.println(path);
for (JarEntry entry; (entry = jis.getNextJarEntry()) != null;) {
if (!entry.isDirectory()) {
String name = entry.getName();
System.out.println("jar中资源>" + name);
if (!name.startsWith("/")) {
name = "/" + name;
}
if (name.startsWith(path)) {
System.out.println("jar中指定包资源>" + name);
res.add(name.substring(1));
}
}
}
return res;
}
项目:struts2
文件:DefaultClassFinder.java
private List<String> jar(JarInputStream jarStream) throws IOException {
List<String> classNames = new ArrayList<>();
JarEntry entry;
while ((entry = jarStream.getNextJarEntry()) != null) {
if (entry.isDirectory() || !entry.getName().endsWith(".class")) {
continue;
}
String className = entry.getName();
className = className.replaceFirst(".class$", "");
//war files are treated as .jar files, so takeout WEB-INF/classes
className = StringUtils.removeStart(className, "WEB-INF/classes/");
className = className.replace('/', '.');
classNames.add(className);
}
return classNames;
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:JarFile.java
void setupEntryCertificates(JarEntry entry) {
// Fallback to JarInputStream to obtain certificates, not fast but hopefully not
// happening that often.
try {
JarInputStream inputStream = new JarInputStream(
getData().getInputStream(ResourceAccess.ONCE));
try {
java.util.jar.JarEntry certEntry = inputStream.getNextJarEntry();
while (certEntry != null) {
inputStream.closeEntry();
if (entry.getName().equals(certEntry.getName())) {
setCertificates(entry, certEntry);
}
setCertificates(getJarEntry(certEntry.getName()), certEntry);
certEntry = inputStream.getNextJarEntry();
}
}
finally {
inputStream.close();
}
}
catch (IOException ex) {
throw new IllegalStateException(ex);
}
}