diff --git a/impl/google/discovery/jni.go b/impl/google/discovery/jni.go
index 49376d6..2eb2582 100644
--- a/impl/google/discovery/jni.go
+++ b/impl/google/discovery/jni.go
@@ -11,7 +11,6 @@
 	"encoding/binary"
 	"unsafe"
 
-	"v.io/v23"
 	"v.io/v23/discovery"
 	"v.io/v23/security"
 	idiscovery "v.io/x/ref/lib/discovery"
@@ -40,9 +39,6 @@
 	// Global reference io.v.v23.security.BlessingPattern
 	jBlessingPatternClass jutil.Class
 
-	// Global reference io.v.impl.google.lib.discovery.VDiscoveryImpl
-	jVDiscoveryImplClass jutil.Class
-
 	// Global reference io.v.v23.discovery.Update
 	jUpdateClass jutil.Class
 )
@@ -74,10 +70,6 @@
 		return err
 	}
 
-	jVDiscoveryImplClass, err = jutil.JFindClass(env, "io/v/impl/google/lib/discovery/VDiscoveryImpl")
-	if err != nil {
-		return err
-	}
 
 	jUpdateClass, err = jutil.JFindClass(env, "io/v/v23/discovery/Update")
 	return err
@@ -112,27 +104,6 @@
 	return convertStringtoUUID(jenv, jclass, jName, converter)
 }
 
-//export Java_io_v_impl_google_lib_discovery_VDiscoveryImpl_nativeCreate
-func Java_io_v_impl_google_lib_discovery_VDiscoveryImpl_nativeCreate(jenv *C.JNIEnv, jclass C.jclass, jContext C.jobject) C.jobject {
-	env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
-	ctx, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jContext))))
-	if err != nil {
-		jutil.JThrowV(env, err);
-		return C.jobject(unsafe.Pointer(jutil.NullObject))
-	}
-	d := v23.GetDiscovery(ctx)
-	ptrD := &d
-	jutil.GoRef(ptrD)
-	trigger := idiscovery.NewTrigger()
-	jutil.GoRef(trigger)
-
-	jDiscovery, err := jutil.NewObject(env, jVDiscoveryImplClass, []jutil.Sign{jutil.LongSign, jutil.LongSign}, int64(jutil.PtrValue(ptrD)), int64(jutil.PtrValue(trigger)))
-	if err != nil {
-		jutil.JThrowV(env, err);
-		return C.jobject(unsafe.Pointer(jutil.NullObject))
-	}
-	return C.jobject(unsafe.Pointer(jDiscovery))
-}
 
 //export Java_io_v_impl_google_lib_discovery_VDiscoveryImpl_nativeDelete
 func Java_io_v_impl_google_lib_discovery_VDiscoveryImpl_nativeDelete(jenv *C.JNIEnv, _ C.jobject, discovery C.jlong, trigger C.jlong) {
diff --git a/impl/google/rt/jni.go b/impl/google/rt/jni.go
index c5239ba..71f2369 100644
--- a/impl/google/rt/jni.go
+++ b/impl/google/rt/jni.go
@@ -11,7 +11,8 @@
 
 	"v.io/v23"
 	"v.io/v23/context"
-	_ "v.io/x/ref/runtime/factories/roaming"
+
+	idiscovery "v.io/x/ref/lib/discovery"
 
 	jns "v.io/x/jni/impl/google/namespace"
 	jrpc "v.io/x/jni/impl/google/rpc"
@@ -28,6 +29,8 @@
 	serverSign  = jutil.ClassSign("io.v.v23.rpc.Server")
 
 	jVRuntimeImplClass jutil.Class
+
+	jVDiscoveryImplClass jutil.Class
 )
 
 // Init initializes the JNI code with the given Java environment.  This method
@@ -39,6 +42,12 @@
 	if err != nil {
 		return err
 	}
+
+	jVDiscoveryImplClass, err = jutil.JFindClass(env, "io/v/impl/google/lib/discovery/VDiscoveryImpl")
+	if err != nil {
+		return err
+	}
+
 	return nil
 }
 
@@ -272,3 +281,25 @@
 	}
 	return C.jobject(unsafe.Pointer(jSpec))
 }
+
+//export Java_io_v_impl_google_rt_VRuntimeImpl_nativeGetDiscovery
+func Java_io_v_impl_google_rt_VRuntimeImpl_nativeGetDiscovery(jenv *C.JNIEnv, jclass C.jclass, jContext C.jobject) C.jobject {
+	env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
+	ctx, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jContext))))
+	if err != nil {
+		jutil.JThrowV(env, err);
+		return C.jobject(unsafe.Pointer(jutil.NullObject))
+	}
+	d := v23.GetDiscovery(ctx)
+	ptrD := &d
+	jutil.GoRef(ptrD)
+	trigger := idiscovery.NewTrigger()
+	jutil.GoRef(trigger)
+
+	jDiscovery, err := jutil.NewObject(env, jVDiscoveryImplClass, []jutil.Sign{jutil.LongSign, jutil.LongSign}, int64(jutil.PtrValue(ptrD)), int64(jutil.PtrValue(trigger)))
+	if err != nil {
+		jutil.JThrowV(env, err);
+		return C.jobject(unsafe.Pointer(jutil.NullObject))
+	}
+	return C.jobject(unsafe.Pointer(jDiscovery))
+}
