diff --git a/Sources/JavaKit/BridgedValues/JavaValue+String.swift b/Sources/JavaKit/BridgedValues/JavaValue+String.swift index e9c11e64..5e98634d 100644 --- a/Sources/JavaKit/BridgedValues/JavaValue+String.swift +++ b/Sources/JavaKit/BridgedValues/JavaValue+String.swift @@ -24,6 +24,10 @@ extension String: JavaValue { } public init(fromJNI value: JNIType, in environment: JNIEnvironment) { + guard let value else { + self.init() + return + } let cString = environment.interface.GetStringUTFChars(environment, value, nil)! defer { environment.interface.ReleaseStringUTFChars(environment, value, cString) } self = String(cString: cString) diff --git a/Tests/JavaKitTests/BasicRuntimeTests.swift b/Tests/JavaKitTests/BasicRuntimeTests.swift index e417cd6d..1cb0e787 100644 --- a/Tests/JavaKitTests/BasicRuntimeTests.swift +++ b/Tests/JavaKitTests/BasicRuntimeTests.swift @@ -76,6 +76,12 @@ class BasicRuntimeTests: XCTestCase { XCTAssertEqual(String(describing: error), "org/swift/javakit/Nonexistent") } } + + func testNullJavaStringConversion() throws { + let environment = try jvm.environment() + let nullString = String(fromJNI: nil, in: environment) + XCTAssertEqual(nullString, "") + } } @JavaClass("org.swift.javakit.Nonexistent")