diff --git a/android/mutator.go b/android/mutator.go
index c8f3e8f..e20bc2c 100644
--- a/android/mutator.go
+++ b/android/mutator.go
@@ -74,7 +74,7 @@
 	func(ctx RegisterMutatorsContext) {
 		ctx.TopDown("load_hooks", loadHookMutator).Parallel()
 	},
-	registerPrebuiltsPreArchMutators,
+	RegisterPrebuiltsPreArchMutators,
 	RegisterDefaultsPreArchMutators,
 }
 
@@ -86,7 +86,7 @@
 }
 
 var postDeps = []RegisterMutatorFunc{
-	registerPrebuiltsPostDepsMutators,
+	RegisterPrebuiltsPostDepsMutators,
 }
 
 func PreArchMutators(f RegisterMutatorFunc) {
diff --git a/android/prebuilt.go b/android/prebuilt.go
index 080df91..507aa5f 100644
--- a/android/prebuilt.go
+++ b/android/prebuilt.go
@@ -61,11 +61,11 @@
 	Prebuilt() *Prebuilt
 }
 
-func registerPrebuiltsPreArchMutators(ctx RegisterMutatorsContext) {
+func RegisterPrebuiltsPreArchMutators(ctx RegisterMutatorsContext) {
 	ctx.BottomUp("prebuilts", prebuiltMutator).Parallel()
 }
 
-func registerPrebuiltsPostDepsMutators(ctx RegisterMutatorsContext) {
+func RegisterPrebuiltsPostDepsMutators(ctx RegisterMutatorsContext) {
 	ctx.TopDown("prebuilt_select", PrebuiltSelectModuleMutator).Parallel()
 	ctx.BottomUp("prebuilt_replace", PrebuiltReplaceMutator).Parallel()
 }
diff --git a/android/prebuilt_test.go b/android/prebuilt_test.go
index fe763ed..774a15c 100644
--- a/android/prebuilt_test.go
+++ b/android/prebuilt_test.go
@@ -123,8 +123,8 @@
 	for _, test := range prebuiltsTests {
 		t.Run(test.name, func(t *testing.T) {
 			ctx := NewTestContext()
-			ctx.PreArchMutators(registerPrebuiltsPreArchMutators)
-			ctx.PostDepsMutators(registerPrebuiltsPostDepsMutators)
+			ctx.PreArchMutators(RegisterPrebuiltsPreArchMutators)
+			ctx.PostDepsMutators(RegisterPrebuiltsPostDepsMutators)
 			ctx.RegisterModuleType("prebuilt", ModuleFactoryAdaptor(newPrebuiltModule))
 			ctx.RegisterModuleType("source", ModuleFactoryAdaptor(newSourceModule))
 			ctx.Register()
diff --git a/java/androidmk.go b/java/androidmk.go
index 086ba7a..9ccf856 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -15,21 +15,17 @@
 package java
 
 import (
-	"fmt"
-
 	"android/soong/android"
 )
 
-func (*Library) AndroidMk() (ret android.AndroidMkData, err error) {
+func (library *Library) AndroidMk() (ret android.AndroidMkData, err error) {
 	ret.Class = "JAVA_LIBRARIES"
-	// TODO
-	err = fmt.Errorf("Not yet implemented")
+	ret.OutputFile = android.OptionalPathForPath(library.outputFile)
 	return
 }
 
-func (*Prebuilt) AndroidMk() (ret android.AndroidMkData, err error) {
+func (prebuilt *Prebuilt) AndroidMk() (ret android.AndroidMkData, err error) {
 	ret.Class = "JAVA_LIBRARIES"
-	// TODO
-	err = fmt.Errorf("Not yet implemented")
+	ret.OutputFile = android.OptionalPathForPath(prebuilt.classpathFile)
 	return
 }
diff --git a/java/java.go b/java/java.go
index 1ef1c26..f7191bf 100644
--- a/java/java.go
+++ b/java/java.go
@@ -531,6 +531,10 @@
 	return &j.prebuilt
 }
 
+func (j *Prebuilt) Name() string {
+	return j.prebuilt.Name(j.ModuleBase.Name())
+}
+
 func (j *Prebuilt) DepsMutator(ctx android.BottomUpMutatorContext) {
 }
 
diff --git a/java/java_test.go b/java/java_test.go
index 3443610..de3be49 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -57,6 +57,8 @@
 	ctx.RegisterModuleType("java_library", android.ModuleFactoryAdaptor(LibraryFactory))
 	ctx.RegisterModuleType("java_prebuilt_library", android.ModuleFactoryAdaptor(PrebuiltFactory))
 	ctx.RegisterModuleType("java_defaults", android.ModuleFactoryAdaptor(defaultsFactory))
+	ctx.PreArchMutators(android.RegisterPrebuiltsPreArchMutators)
+	ctx.PreArchMutators(android.RegisterPrebuiltsPostDepsMutators)
 	ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
 	ctx.Register()
 
diff --git a/root.bp b/root.bp
index 08f2ff8..7e22a55 100644
--- a/root.bp
+++ b/root.bp
@@ -29,6 +29,7 @@
     "prebuilts/clang/host/linux-x86",
     "prebuilts/ndk",
     "prebuilts/sdk",
+    "prebuilts/misc",
     "system/*",
     "system/hardware/interfaces",
     "system/tools/*",
