diff --git a/java/jacoco.go b/java/jacoco.go
index 8f1ceb2..541a84a 100644
--- a/java/jacoco.go
+++ b/java/jacoco.go
@@ -22,6 +22,7 @@
 	"strings"
 
 	"github.com/google/blueprint"
+	"github.com/google/blueprint/proptools"
 
 	"android/soong/android"
 )
@@ -105,13 +106,22 @@
 			return nil, err
 		}
 	}
-	return specs, nil
+	return proptools.NinjaAndShellEscape(specs), nil
 }
 
 func jacocoFilterToSpec(filter string) (string, error) {
-	wildcard := strings.HasSuffix(filter, "*")
-	filter = strings.TrimSuffix(filter, "*")
-	recursiveWildcard := wildcard && (strings.HasSuffix(filter, ".") || filter == "")
+	recursiveWildcard := strings.HasSuffix(filter, "**")
+	nonRecursiveWildcard := false
+	if !recursiveWildcard {
+		nonRecursiveWildcard = strings.HasSuffix(filter, "*")
+		filter = strings.TrimSuffix(filter, "*")
+	} else {
+		filter = strings.TrimSuffix(filter, "**")
+	}
+
+	if recursiveWildcard && !(strings.HasSuffix(filter, ".") || filter == "") {
+		return "", fmt.Errorf("only '**' or '.**' is supported as recursive wildcard in a filter")
+	}
 
 	if strings.ContainsRune(filter, '*') {
 		return "", fmt.Errorf("'*' is only supported as the last character in a filter")
@@ -121,7 +131,7 @@
 
 	if recursiveWildcard {
 		spec += "**/*.class"
-	} else if wildcard {
+	} else if nonRecursiveWildcard {
 		spec += "*.class"
 	} else {
 		spec += ".class"
