Skip to content

Commit b9b0f26

Browse files
committed
Keep Swing code working
1 parent fb0ad74 commit b9b0f26

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ import PackageDescription
1111
let package = Package(
1212
name: "java_swift",
1313
dependencies: [
14-
.Package(url: "https://github.com/SwiftJava/CJavaVM.git", "1.1.3"),
14+
.Package(url: "https://github.com/SwiftJava/CJavaVM.git", versions: Version(1,0,0)..<Version(10,0,0)),
1515
]
1616
)

Sources/JNICore.swift

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ open class JNICore {
5050

5151
open var jvm: UnsafeMutablePointer<JavaVM?>?
5252
open var api: JNINativeInterface_!
53-
open var classLoader: jclass!
53+
open var classLoader: jobject?
5454

5555
open var envCache = [pthread_t:UnsafeMutablePointer<JNIEnv?>?]()
5656
fileprivate let envLock = NSLock()
@@ -183,16 +183,18 @@ open class JNICore {
183183
open func FindClass( _ name: UnsafePointer<Int8>, _ file: StaticString = #file, _ line: Int = #line ) -> jclass? {
184184
autoInit()
185185
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+
}
196198
if clazz == nil {
197199
report( "Could not find class \(String( cString: name ))", file, line )
198200
if strncmp( name, "org/swiftjava/", 14 ) == 0 {

0 commit comments

Comments
 (0)