Skip to content

Commit afcd8e0

Browse files
author
Matt
authored
Update SlimJar + Nashorn for Java 17 (#51)
* Updated SlimJar * Updated Nashorn to work on Java 17
1 parent 5dbf648 commit afcd8e0

File tree

6 files changed

+27
-13
lines changed

6 files changed

+27
-13
lines changed

evaluator/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ repositories {
1919
dependencies {
2020
compileOnly project(':evaluator-api')
2121
compileOnly fileTree("libs")
22-
implementation 'io.github.slimjar:slimjar:1.2.3'
22+
implementation 'io.github.slimjar:slimjar:1.2.6'
2323
testImplementation group: 'junit', name: 'junit', version: '4.12'
2424
}

evaluator/libs/nashorn-core-15.1.jar

-2.09 MB
Binary file not shown.

evaluator/libs/nashorn-core-15.3.jar

2.07 MB
Binary file not shown.

evaluator/src/main/java/com/extendedclip/papi/expansion/javascript/evaluator/NashornScriptEvaluatorFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
public final class NashornScriptEvaluatorFactory implements ScriptEvaluatorFactory {
1414
public static final Collection<String> LIBRARIES = Arrays.asList(
15-
"nashorn-core-15.1.isolated-jar",
15+
"nashorn-core-15.3.isolated-jar",
1616
"asm-commons-9.2.isolated-jar",
1717
"asm-util-9.2.isolated-jar",
1818
"asm-9.2.isolated-jar"

evaluator/src/main/java/com/extendedclip/papi/expansion/javascript/evaluator/QuickJsScriptEvaluatorFactory.java

-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.extendedclip.papi.expansion.javascript.evaluator;
22

33
import com.extendedclip.papi.expansion.javascript.evaluator.util.InjectionUtil;
4-
import io.github.slimjar.injector.loader.Injectable;
5-
import io.github.slimjar.injector.loader.InjectableFactory;
64

75
import javax.script.ScriptException;
86
import java.io.File;

evaluator/src/main/java/com/extendedclip/papi/expansion/javascript/evaluator/util/InjectionUtil.java

+25-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.extendedclip.papi.expansion.javascript.evaluator.QuickJsScriptEvaluatorFactory;
55
import io.github.slimjar.injector.loader.Injectable;
66
import io.github.slimjar.injector.loader.InjectableFactory;
7+
import io.github.slimjar.resolver.data.Repository;
8+
import io.github.slimjar.resolver.mirrors.SimpleMirrorSelector;
79

810
import java.io.File;
911
import java.io.IOException;
@@ -18,6 +20,7 @@
1820
import java.security.NoSuchAlgorithmException;
1921
import java.util.ArrayList;
2022
import java.util.Collection;
23+
import java.util.Collections;
2124
import java.util.List;
2225
import java.util.jar.JarFile;
2326
import java.util.zip.ZipEntry;
@@ -42,9 +45,18 @@ public static boolean tryInject(final Collection<String> libraries) {
4245

4346
public static void inject(final Collection<String> libraries) throws LibraryInjectionException {
4447
try {
45-
final Collection<URL> libraryURLs = extractLibraries(libraries);
48+
final File selfFile = new File(SELF_JAR_URL.toURI());
49+
final File libsFolder = getLibsFolder(selfFile);
50+
51+
final Collection<URL> libraryURLs = extractLibraries(selfFile, libsFolder, libraries);
4652
final ClassLoader bukkitClassLoader = InjectionUtil.class.getClassLoader().getParent();
47-
final Injectable injectable = InjectableFactory.create(bukkitClassLoader);
53+
final Injectable injectable = InjectableFactory.create(
54+
libsFolder.toPath(),
55+
//Collections.singletonList(new Repository(new URL(SimpleMirrorSelector.CENTRAL_URL))),
56+
Collections.emptyList(),
57+
bukkitClassLoader
58+
);
59+
4860
for (final URL libraryURL : libraryURLs) {
4961
injectable.inject(libraryURL);
5062
}
@@ -53,12 +65,12 @@ public static void inject(final Collection<String> libraries) throws LibraryInje
5365
}
5466
}
5567

56-
private static Collection<URL> extractLibraries(final Collection<String> libraries) throws IOException, URISyntaxException, NoSuchAlgorithmException, ReflectiveOperationException {
68+
private static Collection<URL> extractLibraries(final File selfFile, final File libsFolder, final Collection<String> libraries) throws IOException, URISyntaxException, NoSuchAlgorithmException, ReflectiveOperationException {
5769
final Collection<URL> extracted = new ArrayList<>();
58-
final File selfFile = new File(SELF_JAR_URL.toURI());
5970
final JarFile jarFile = new JarFile(selfFile);
71+
6072
for (final String library : libraries) {
61-
final File extractedFile = getExtractionFile(library, selfFile);
73+
final File extractedFile = getExtractionFile(library, libsFolder);
6274
if (extractedFile.exists()) {
6375
extracted.add(extractedFile.toURI().toURL());
6476
continue;
@@ -72,16 +84,20 @@ private static Collection<URL> extractLibraries(final Collection<String> librari
7284
//noinspection ResultOfMethodCallIgnored
7385
extractedFile.createNewFile();
7486
try (final InputStream stream = jarFile.getInputStream(entry);
75-
final ReadableByteChannel inChannel = Channels.newChannel(stream);
76-
final FileChannel outChannel = FileChannel.open(extractedFile.toPath(), StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
87+
final ReadableByteChannel inChannel = Channels.newChannel(stream);
88+
final FileChannel outChannel = FileChannel.open(extractedFile.toPath(), StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
7789
outChannel.transferFrom(inChannel, 0, entry.getSize());
7890
}
7991
extracted.add(extractedFile.toURI().toURL());
8092
}
8193
return extracted;
8294
}
8395

84-
private static File getExtractionFile(final String name, final File selfFile) {
85-
return new File(selfFile.getParentFile(), "libraries/" + name.replace("isolated-jar", "jar"));
96+
private static File getExtractionFile(final String name, final File libsFolder) {
97+
return new File(libsFolder, name.replace("isolated-jar", "jar"));
98+
}
99+
100+
private static File getLibsFolder(final File selfFile) {
101+
return new File(selfFile.getParentFile(), "libraries");
86102
}
87103
}

0 commit comments

Comments
 (0)