25 lines
896 B
Kotlin
25 lines
896 B
Kotlin
package app.revanced.patch
|
|
|
|
import java.io.File
|
|
import java.net.URL
|
|
import java.net.URLClassLoader
|
|
|
|
internal class PatchLoader {
|
|
internal companion object {
|
|
internal fun injectPatches(file: File) {
|
|
// This function will fail on Java 9 and above.
|
|
try {
|
|
val url = file.toURI().toURL()
|
|
val classLoader = Thread.currentThread().contextClassLoader as URLClassLoader
|
|
val method = URLClassLoader::class.java.getDeclaredMethod("addURL", URL::class.java)
|
|
method.isAccessible = true
|
|
method.invoke(classLoader, url)
|
|
} catch (e: Exception) {
|
|
throw Exception(
|
|
"Failed to inject patches! The CLI does NOT work on Java 9 and above, please use Java 8!",
|
|
e // propagate exception
|
|
)
|
|
}
|
|
}
|
|
}
|
|
} |