diff --git a/parabotv2/src/org/parabot/core/asm/ASMClassLoader.java b/parabotv2/src/org/parabot/core/asm/ASMClassLoader.java index b72c10c..c7d03c0 100644 --- a/parabotv2/src/org/parabot/core/asm/ASMClassLoader.java +++ b/parabotv2/src/org/parabot/core/asm/ASMClassLoader.java @@ -5,6 +5,7 @@ import org.objectweb.asm.ClassWriter; import org.objectweb.asm.tree.ClassNode; import org.parabot.core.classpath.ClassPath; +import java.net.MalformedURLException; import java.net.URL; import java.security.AllPermission; import java.security.CodeSource; @@ -36,7 +37,12 @@ public class ASMClassLoader extends ClassLoader { protected URL findResource(String name) { if (getSystemResource(name) == null) { if (classPath.resources.containsKey(name)) { - return classPath.resources.get(name); + try { + return classPath.resources.get(name).toURI().toURL(); + } catch (MalformedURLException e) { + e.printStackTrace(); + return null; + } } else { return null; } diff --git a/parabotv2/src/org/parabot/core/classpath/ClassPath.java b/parabotv2/src/org/parabot/core/classpath/ClassPath.java index 9e34957..01e5eec 100644 --- a/parabotv2/src/org/parabot/core/classpath/ClassPath.java +++ b/parabotv2/src/org/parabot/core/classpath/ClassPath.java @@ -10,9 +10,11 @@ import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.nio.file.Files; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.zip.ZipEntry; @@ -38,7 +40,7 @@ import org.parabot.core.ui.components.VerboseLoader; public class ClassPath { public final ArrayList classNames; public final HashMap classes; - public final Map resources; + public final Map resources; public URL lastParsed; private ClassRemapper classRemapper; private boolean isJar; @@ -53,7 +55,7 @@ public class ClassPath { public ClassPath(final boolean isJar) { this.classNames = new ArrayList(); this.classes = new HashMap(); - this.resources = new HashMap(); + this.resources = new HashMap(); this.classRemapper = new ClassRemapper(); this.parseJar = true; this.jarFiles = new ArrayList(); @@ -247,7 +249,7 @@ public class ClassPath { out.write(buffer, 0, len); } catch (IOException e) { } - this.resources.put(name, f.toURI().toURL()); + this.resources.put(name, f); } /** @@ -293,6 +295,11 @@ public class ClassPath { cn.accept(cw); out.write(cw.toByteArray()); } + for(Entry entry : this.resources.entrySet()) { + JarEntry je = new JarEntry(entry.getKey()); + out.putNextEntry(je); + out.write(Files.readAllBytes(entry.getValue().toPath())); + } out.close(); stream.close(); } catch (Exception e) {