KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm using a bytecode library known as ASM to alter classfiles, then I want to write each classfile back into a jar file rather than a folder filled with class files. I do this by running this code: My problem occurs when a ZipException is throw for not being the expected size, i.e. java.util.zip.ZipException: invalid entry compressed size (expected 695 but got 693 bytes) at java.util.zip.ZipOutputStream.closeEntry(Unknown Source) at org.steinburg.client.accessor.Accessor.accessJar(Accessor.java:64) at org.steinburg.client.accessor.Accessor.<init>(Accessor.java:41) at Loader.main(Loader.java:5) package org.steinburg.client.accessor; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarOutputStream; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; public class Accessor { private String input; private File inFile; private JarEntry jarEntry; private JarFile jarFile; private Enumeration<JarEntry> entries; private InputStream is; private String out; private File outFile; private FileOutputStream fos; private JarOutputStream jos; private byte[] bytes; public Accessor(){ try{ input = new String("Input Jar.jar"); inFile = new File(input); jarFile = new JarFile(inFile); entries = jarFile.entries(); out = new String("Output Jar.jar"); outFile = new File(out); fos = new FileOutputStream(outFile); jos = new JarOutputStream(fos); accessJar(); } catch (Exception e) { e.printStackTrace(); } } protected final void accessJar(){ try { while (entries.hasMoreElements()){ jarEntry = entries.nextElement(); is = jarFile.getInputStream(jarEntry); if (jarEntry.getName().endsWith(".class")){
Tags (comma-separated)
Save Edits
Cancel