Fixed up stuff.

Change-Id: I7bcb2f00e84a4cf77ffdb5c2d40701b23a3d7b7c
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))
+}