@@ -50,7 +50,7 @@ open class JNICore {
50
50
51
51
open var jvm : UnsafeMutablePointer < JavaVM ? > ?
52
52
open var api : JNINativeInterface_ !
53
- open var classLoader : jclass !
53
+ open var classLoader : jobject ?
54
54
55
55
open var envCache = [ pthread_t : UnsafeMutablePointer < JNIEnv ? > ? ] ( )
56
56
fileprivate let envLock = NSLock ( )
@@ -183,16 +183,18 @@ open class JNICore {
183
183
open func FindClass( _ name: UnsafePointer < Int8 > , _ file: StaticString = #file, _ line: Int = #line ) -> jclass ? {
184
184
autoInit ( )
185
185
ExceptionReset ( )
186
-
187
- var locals = [ jobject] ( )
188
- var args = [ jvalue ( l: String ( cString: name) . localJavaObject ( & locals) ) ]
189
- let clazz : jclass ? = JNIMethod . CallObjectMethod ( object: classLoader,
190
- methodName: " loadClass " ,
191
- methodSig: " (Ljava/lang/String;)Ljava/lang/Class; " ,
192
- methodCache: & loadClassMethodID,
193
- args: & args,
194
- locals: & locals)
195
-
186
+ var clazz : jclass ? = api. FindClass ( env, name )
187
+
188
+ if clazz == nil && classLoader != nil {
189
+ var locals = [ jobject] ( )
190
+ var args = [ jvalue ( l: String ( cString: name) . localJavaObject ( & locals) ) ]
191
+ clazz = JNIMethod . CallObjectMethod ( object: classLoader,
192
+ methodName: " loadClass " ,
193
+ methodSig: " (Ljava/lang/String;)Ljava/lang/Class; " ,
194
+ methodCache: & loadClassMethodID,
195
+ args: & args,
196
+ locals: & locals)
197
+ }
196
198
if clazz == nil {
197
199
report ( " Could not find class \( String ( cString: name ) ) " , file, line )
198
200
if strncmp ( name, " org/swiftjava/ " , 14 ) == 0 {
0 commit comments