diff --git a/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java b/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java index 254fe27..0d2b848 100644 --- a/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java +++ b/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java @@ -64,17 +64,24 @@ public class MapJarsTiny { .withMappings(TinyUtils.createTinyMappingProvider(mappings, fromM, toM)) .build(); + OutputConsumerPath outputConsumer = null; try { - OutputConsumerPath outputConsumer = new OutputConsumerPath(output); + outputConsumer = new OutputConsumerPath(output); outputConsumer.addNonClassFiles(input); remapper.read(input); remapper.read(classpath); remapper.apply(input, outputConsumer); - outputConsumer.finish(); - remapper.finish(); } catch (Exception e) { + throw new RuntimeException("Failed to remap JAR", e); + } finally { + if (outputConsumer != null) { + try { + outputConsumer.finish(); + } catch (Exception e) { + e.printStackTrace(); + } + } remapper.finish(); - throw new RuntimeException("Failed to remap minecraft to " + toM, e); } } } diff --git a/src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java b/src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java index 70de12d..4f6bef1 100644 --- a/src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java +++ b/src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java @@ -80,11 +80,9 @@ public final class MixinRefmapHelper { ZipUtil.iterate(output, (stream, entry) -> { if (!entry.isDirectory() && entry.getName().endsWith(".json") && !entry.getName().contains("/") && !entry.getName().contains("\\")) { // JSON file in root directory + InputStreamReader inputStreamReader = new InputStreamReader(stream); try { - InputStreamReader inputStreamReader = new InputStreamReader(stream); JsonObject json = GSON.fromJson(inputStreamReader, JsonObject.class); - inputStreamReader.close(); - stream.close(); if (json != null && json.has("mixins") && json.get("mixins").isJsonArray()) { if (!onlyWithoutRefmap || !json.has("refmap")) { mixinFilename.add(entry.getName()); @@ -92,6 +90,9 @@ public final class MixinRefmapHelper { } } catch (Exception e) { // ... + } finally { + inputStreamReader.close(); + stream.close(); } } }); @@ -105,16 +106,17 @@ public final class MixinRefmapHelper { ZipUtil.iterate(output, (stream, entry) -> { if (!entry.isDirectory() && entry.getName().endsWith(".json") && !entry.getName().contains("/") && !entry.getName().contains("\\")) { // JSON file in root directory + InputStreamReader inputStreamReader = new InputStreamReader(stream); try { - InputStreamReader inputStreamReader = new InputStreamReader(stream); JsonObject json = GSON.fromJson(inputStreamReader, JsonObject.class); - inputStreamReader.close(); - stream.close(); if (json != null && json.has("refmap")) { mixinRefmapFilenames.add(json.get("refmap").getAsString()); } } catch (Exception e) { // ... + } finally { + inputStreamReader.close(); + stream.close(); } } }); diff --git a/src/main/java/net/fabricmc/loom/util/ModProcessor.java b/src/main/java/net/fabricmc/loom/util/ModProcessor.java index 1b62c5b..8e6fe59 100644 --- a/src/main/java/net/fabricmc/loom/util/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/util/ModProcessor.java @@ -99,8 +99,9 @@ public class ModProcessor { .withMappings(TinyUtils.createTinyMappingProvider(mappings, fromM, toM)) .build(); + OutputConsumerPath outputConsumer = null; try { - OutputConsumerPath outputConsumer = new OutputConsumerPath(Paths.get(output.getAbsolutePath())); + outputConsumer = new OutputConsumerPath(Paths.get(output.getAbsolutePath())); outputConsumer.addNonClassFiles(input.toPath()); if (!modCompileFiles.contains(input)) { remapper.read(input.toPath()); @@ -112,9 +113,18 @@ public class ModProcessor { outputConsumer.finish(); remapper.finish(); } catch (Exception e){ - remapper.finish(); throw new RuntimeException("Failed to remap JAR to " + toM, e); + } finally { + if (outputConsumer != null) { + try { + outputConsumer.finish(); + } catch (Exception e) { + e.printStackTrace(); + } + } + remapper.finish(); } + if(!output.exists()){ throw new RuntimeException("Failed to remap JAR to " + toM + " file not found: " + output.getAbsolutePath()); } diff --git a/src/main/java/net/fabricmc/loom/util/ModRemapper.java b/src/main/java/net/fabricmc/loom/util/ModRemapper.java index 328c409..310f69e 100644 --- a/src/main/java/net/fabricmc/loom/util/ModRemapper.java +++ b/src/main/java/net/fabricmc/loom/util/ModRemapper.java @@ -79,17 +79,24 @@ public class ModRemapper { TinyRemapper remapper = remapperBuilder.build(); + OutputConsumerPath outputConsumer = null; try { - OutputConsumerPath outputConsumer = new OutputConsumerPath(modJarOutputPath); + outputConsumer = new OutputConsumerPath(modJarOutputPath); outputConsumer.addNonClassFiles(modJarPath); remapper.read(classpath); remapper.read(modJarPath); remapper.apply(modJarPath, outputConsumer); - outputConsumer.finish(); - remapper.finish(); - } catch (Exception e){ - remapper.finish(); + } catch (Exception e) { throw new RuntimeException("Failed to remap JAR", e); + } finally { + if (outputConsumer != null) { + try { + outputConsumer.finish(); + } catch (Exception e) { + e.printStackTrace(); + } + } + remapper.finish(); } if (!modJarOutput.exists()){