@@ -162,8 +162,9 @@ impl<'env> Env<'env> {
162162 static METHOD_GET_MESSAGE : OnceLock < usize > = OnceLock :: new ( ) ;
163163 let throwable_get_message = * METHOD_GET_MESSAGE . get_or_init ( || {
164164 // use JNI FindClass to avoid infinte recursion.
165- let throwable_class = self . require_class_jni ( c"java/lang/Throwable" ) ;
166- let method = self . require_method ( throwable_class, c"getMessage" , c"()Ljava/lang/String;" ) ;
165+ let class_name = c"java/lang/Throwable" ;
166+ let throwable_class = self . require_class_jni ( class_name) ;
167+ let method = self . require_method ( throwable_class, class_name, c"getMessage" , c"()Ljava/lang/String;" ) ;
167168 ( ( * * self . env ) . v1_2 . DeleteLocalRef ) ( self . env , throwable_class) ;
168169 method. addr ( )
169170 } ) as jmethodID ; // it is a global ID
@@ -206,8 +207,14 @@ impl<'env> Env<'env> {
206207 let cl_method = * CL_METHOD . get_or_init ( || {
207208 // We still use JNI FindClass for this, to avoid a chicken-and-egg situation.
208209 // If the system class loader cannot find java.lang.ClassLoader, things are pretty broken!
209- let cl_class = self . require_class_jni ( c"java/lang/ClassLoader" ) ;
210- let cl_method = self . require_method ( cl_class, c"loadClass" , c"(Ljava/lang/String;)Ljava/lang/Class;" ) ;
210+ let class_name = c"java/lang/ClassLoader" ;
211+ let cl_class = self . require_class_jni ( class_name) ;
212+ let cl_method = self . require_method (
213+ cl_class,
214+ class_name,
215+ c"loadClass" ,
216+ c"(Ljava/lang/String;)Ljava/lang/Class;" ,
217+ ) ;
211218 ( ( * * self . env ) . v1_2 . DeleteLocalRef ) ( self . env , cl_class) ;
212219 cl_method. addr ( )
213220 } ) as jmethodID ; // it is a global ID
@@ -237,65 +244,100 @@ impl<'env> Env<'env> {
237244
238245 unsafe fn require_class_jni ( self , class : & CStr ) -> jclass {
239246 let class = ( ( * * self . env ) . v1_2 . FindClass ) ( self . env , class. as_ptr ( ) ) ;
240- assert ! ( !class. is_null( ) ) ;
247+ assert ! ( !class. is_null( ) , "could not find class {class:?}" ) ;
241248 class
242249 }
243250
244- pub unsafe fn require_method ( self , class : jclass , method : & CStr , descriptor : & CStr ) -> jmethodID {
251+ pub unsafe fn require_method (
252+ self ,
253+ class : jclass ,
254+ class_name : & CStr ,
255+ method : & CStr ,
256+ descriptor : & CStr ,
257+ ) -> jmethodID {
245258 let method = ( ( * * self . env ) . v1_2 . GetMethodID ) ( self . env , class, method. as_ptr ( ) , descriptor. as_ptr ( ) ) ;
246- assert ! ( !method. is_null( ) ) ;
259+ assert ! (
260+ !method. is_null( ) ,
261+ "could not find method {method:?} {descriptor:?} on class {class_name:?}"
262+ ) ;
247263 method
248264 }
249265
250- pub unsafe fn require_static_method ( self , class : jclass , method : & CStr , descriptor : & CStr ) -> jmethodID {
266+ pub unsafe fn require_static_method (
267+ self ,
268+ class : jclass ,
269+ class_name : & CStr ,
270+ method : & CStr ,
271+ descriptor : & CStr ,
272+ ) -> jmethodID {
251273 let method = ( ( * * self . env ) . v1_2 . GetStaticMethodID ) ( self . env , class, method. as_ptr ( ) , descriptor. as_ptr ( ) ) ;
252- assert ! ( !method. is_null( ) ) ;
274+ assert ! (
275+ !method. is_null( ) ,
276+ "could not find static method {method:?} {descriptor:?} on class {class_name:?}"
277+ ) ;
253278 method
254279 }
255280
256- pub unsafe fn require_field ( self , class : jclass , field : & CStr , descriptor : & CStr ) -> jfieldID {
281+ pub unsafe fn require_field ( self , class : jclass , class_name : & CStr , field : & CStr , descriptor : & CStr ) -> jfieldID {
257282 let field = ( ( * * self . env ) . v1_2 . GetFieldID ) ( self . env , class, field. as_ptr ( ) , descriptor. as_ptr ( ) ) ;
258- assert ! ( !field. is_null( ) ) ;
283+ assert ! (
284+ !field. is_null( ) ,
285+ "could not find field {field:?} {descriptor:?} on class {class_name:?}"
286+ ) ;
259287 field
260288 }
261289
262- pub unsafe fn require_static_field ( self , class : jclass , field : & CStr , descriptor : & CStr ) -> jfieldID {
290+ pub unsafe fn require_static_field (
291+ self ,
292+ class : jclass ,
293+ class_name : & CStr ,
294+ field : & CStr ,
295+ descriptor : & CStr ,
296+ ) -> jfieldID {
263297 let field = ( ( * * self . env ) . v1_2 . GetStaticFieldID ) ( self . env , class, field. as_ptr ( ) , descriptor. as_ptr ( ) ) ;
264- assert ! ( !field. is_null( ) ) ;
298+ assert ! (
299+ !field. is_null( ) ,
300+ "could not find static field {field:?} {descriptor:?} on class {class_name:?}"
301+ ) ;
265302 field
266303 }
267304
268305 // Multi-Query Methods
269306 // XXX: Remove these unused functions.
270307
271- pub unsafe fn require_class_method ( self , class : & CStr , method : & CStr , descriptor : & CStr ) -> ( jclass , jmethodID ) {
272- let class = self . require_class ( class) ;
273- ( class, self . require_method ( class, method, descriptor) )
308+ pub unsafe fn require_class_method (
309+ self ,
310+ class_name : & CStr ,
311+ method : & CStr ,
312+ descriptor : & CStr ,
313+ ) -> ( jclass , jmethodID ) {
314+ let class = self . require_class ( class_name) ;
315+ ( class, self . require_method ( class, class_name, method, descriptor) )
274316 }
275317
276318 pub unsafe fn require_class_static_method (
277319 self ,
278- class : & CStr ,
320+ class_name : & CStr ,
279321 method : & CStr ,
280322 descriptor : & CStr ,
281323 ) -> ( jclass , jmethodID ) {
282- let class = self . require_class ( class ) ;
283- ( class, self . require_static_method ( class, method, descriptor) )
324+ let class = self . require_class ( class_name ) ;
325+ ( class, self . require_static_method ( class, class_name , method, descriptor) )
284326 }
285327
286- pub unsafe fn require_class_field ( self , class : & CStr , method : & CStr , descriptor : & CStr ) -> ( jclass , jfieldID ) {
287- let class = self . require_class ( class ) ;
288- ( class, self . require_field ( class, method, descriptor) )
328+ pub unsafe fn require_class_field ( self , class_name : & CStr , method : & CStr , descriptor : & CStr ) -> ( jclass , jfieldID ) {
329+ let class = self . require_class ( class_name ) ;
330+ ( class, self . require_field ( class, class_name , method, descriptor) )
289331 }
290332
291333 pub unsafe fn require_class_static_field (
292334 self ,
293- class : & CStr ,
335+ class_name : & CStr ,
294336 method : & CStr ,
295337 descriptor : & CStr ,
296338 ) -> ( jclass , jfieldID ) {
297- let class = self . require_class ( class ) ;
298- ( class, self . require_static_field ( class, method, descriptor) )
339+ let class = self . require_class ( class_name ) ;
340+ ( class, self . require_static_field ( class, class_name , method, descriptor) )
299341 }
300342
301343 // Constructor Methods
0 commit comments