diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b1b8ef56b..eddabd2ee 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a9db11550..69dd0d040 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/src/org/python/compiler/ClassFile.java b/src/org/python/compiler/ClassFile.java index 29d083823..1324bd4c1 100644 --- a/src/org/python/compiler/ClassFile.java +++ b/src/org/python/compiler/ClassFile.java @@ -89,7 +89,13 @@ public ClassFile(String name, String superclass, int access, long mtime) { this.access = access; this.mtime = mtime; - cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES) { + @Override + protected ClassLoader getClassLoader() { + ClassLoader cl = ClassFile.class.getClassLoader(); + return cl != null ? cl : super.getClassLoader(); + } + }; methodVisitors = Collections.synchronizedList(new ArrayList()); fieldVisitors = Collections.synchronizedList(new ArrayList()); annotationVisitors = Collections.synchronizedList(new ArrayList()); diff --git a/src/org/python/expose/generate/ExposeTask.java b/src/org/python/expose/generate/ExposeTask.java index acd1ba217..00518a217 100644 --- a/src/org/python/expose/generate/ExposeTask.java +++ b/src/org/python/expose/generate/ExposeTask.java @@ -58,7 +58,13 @@ private void expose(Set toExpose) { } private void generate(Exposer exposer) { - ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES) { + @Override + protected ClassLoader getClassLoader() { + ClassLoader cl = ExposeTask.this.getClass().getClassLoader(); + return cl != null ? cl : super.getClassLoader(); + } + }; exposer.generate(writer); write(exposer.getClassName(), writer.toByteArray()); } diff --git a/src/org/python/expose/generate/ExposedTypeProcessor.java b/src/org/python/expose/generate/ExposedTypeProcessor.java index 5bdf19a4a..73e92d321 100644 --- a/src/org/python/expose/generate/ExposedTypeProcessor.java +++ b/src/org/python/expose/generate/ExposedTypeProcessor.java @@ -46,7 +46,13 @@ public class ExposedTypeProcessor implements Opcodes, PyTypes { */ public ExposedTypeProcessor(InputStream in) throws IOException { ClassReader cr = new ClassReader(in); - cw = new ClassWriter(cr, ClassWriter.COMPUTE_FRAMES); + cw = new ClassWriter(cr, ClassWriter.COMPUTE_FRAMES) { + @Override + protected ClassLoader getClassLoader() { + ClassLoader cl = ExposedTypeProcessor.this.getClass().getClassLoader(); + return cl != null ? cl : super.getClassLoader(); + } + }; cr.accept(new TypeProcessor(cw), 0); } diff --git a/src/org/python/expose/generate/Exposer.java b/src/org/python/expose/generate/Exposer.java index 3f0eb9f35..2ff65d5d9 100644 --- a/src/org/python/expose/generate/Exposer.java +++ b/src/org/python/expose/generate/Exposer.java @@ -69,7 +69,13 @@ public Exposer(Class superClass, String generatedName, Type...interfacesImple * Generates this Exposer and loads it into the given Loader. */ protected Class load(BytecodeLoader.Loader l) { - ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES) { + @Override + protected ClassLoader getClassLoader() { + ClassLoader cl = Exposer.this.getClass().getClassLoader(); + return cl != null ? cl : super.getClassLoader(); + } + }; generate(cw); return l.loadClassFromBytes(getClassName(), cw.toByteArray()); } diff --git a/src/org/python/modules/jffi/AsmClassBuilder.java b/src/org/python/modules/jffi/AsmClassBuilder.java index 5bfb4bfa0..1cd0b6bf1 100644 --- a/src/org/python/modules/jffi/AsmClassBuilder.java +++ b/src/org/python/modules/jffi/AsmClassBuilder.java @@ -57,7 +57,13 @@ final class AsmClassBuilder { className = p(Invoker.class) + "$ffi$" + nextClassID.getAndIncrement(); - classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES) { + @Override + protected ClassLoader getClassLoader() { + ClassLoader cl = AsmClassBuilder.class.getClassLoader(); + return cl != null ? cl : super.getClassLoader(); + } + }; classVisitor = DEBUG ? newCheckClassAdapter(classWriter) : classWriter; classVisitor.visit(V1_5, ACC_PUBLIC | ACC_FINAL, className, null, p(parentClass), new String[0]);