mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 15:49:00 +01:00
f15abda562
Fixes #4841
30 lines
1.6 KiB
Diff
30 lines
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Kyle Wood <demonwav@gmail.com>
|
|
Date: Fri, 4 Dec 2020 15:53:19 -0800
|
|
Subject: [PATCH] Enable multi-release plugin jars
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
index 62f7a6817da079513f471e36cd79739d36a36d86..7760be3e34fa20825faf145d9fb5b2855c1a4602 100644
|
|
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
@@ -56,7 +56,18 @@ public final class PluginClassLoader extends URLClassLoader { // Spigot
|
|
this.description = description;
|
|
this.dataFolder = dataFolder;
|
|
this.file = file;
|
|
- this.jar = new JarFile(file);
|
|
+ // Paper - enable multi-release jars for Java 9+
|
|
+ JarFile jarFile;
|
|
+ try {
|
|
+ final java.lang.reflect.Method runtimeVersionMethod = JarFile.class.getMethod("runtimeVersion");
|
|
+ final Object runtimeVersion = runtimeVersionMethod.invoke(null);
|
|
+ @SuppressWarnings("JavaReflectionMemberAccess") final java.lang.reflect.Constructor<JarFile> constructor = JarFile.class.getConstructor(File.class, boolean.class, int.class, runtimeVersion.getClass());
|
|
+ jarFile = constructor.newInstance(file, true, java.util.zip.ZipFile.OPEN_READ, runtimeVersion);
|
|
+ } catch (Exception ignored) {
|
|
+ jarFile = new JarFile(file);
|
|
+ }
|
|
+ this.jar = jarFile;
|
|
+ // Paper end
|
|
this.manifest = jar.getManifest();
|
|
this.url = file.toURI().toURL();
|
|
|