From 642612e1c3243c73af45090c52707da6d316229d Mon Sep 17 00:00:00 2001 From: Agaricus Date: Tue, 22 Jan 2013 00:17:01 -0800 Subject: [PATCH] Allow remapping jars without Main-Class attribute (ex: Bukkit plugins) --- src/main/java/net/md_5/specialsource/Jar.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/md_5/specialsource/Jar.java b/src/main/java/net/md_5/specialsource/Jar.java index 87da80c..5bd1292 100644 --- a/src/main/java/net/md_5/specialsource/Jar.java +++ b/src/main/java/net/md_5/specialsource/Jar.java @@ -35,7 +35,9 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.jar.Attributes; import java.util.jar.JarFile; +import java.util.jar.Manifest; import java.util.zip.ZipEntry; import lombok.AccessLevel; import lombok.EqualsAndHashCode; @@ -104,7 +106,19 @@ public class Jar { public static Jar init(File file) throws IOException { JarFile jarFile = new JarFile(file); - String main = jarFile.getManifest().getMainAttributes().getValue("Main-Class").replace('.', '/'); + String main = null; + + Manifest manifest = jarFile.getManifest(); + if (manifest != null) { + Attributes attributes = manifest.getMainAttributes(); + if (attributes != null) { + String mainClassName = attributes.getValue("Main-Class"); + if (mainClassName != null) { + main = mainClassName.replace('.', '/'); + } + } + } + return new Jar(jarFile, main); } }