diff --git a/bind/genjava.go b/bind/genjava.go
index 633f9aa..03ce9a1 100644
--- a/bind/genjava.go
+++ b/bind/genjava.go
@@ -735,14 +735,14 @@
 	g.Printf("Java_%s_", g.jniPkgName())
 	if sName != "" {
 		if proxy {
-			g.Printf(g.className())
+			g.Printf(java.JNIMangle(g.className()))
 			// 0024 is the mangled form of $, for naming inner classes.
 			g.Printf("_00024proxy%s", sName)
 		} else {
 			g.Printf(java.JNIMangle(g.javaTypeName(sName)))
 		}
 	} else {
-		g.Printf(g.className())
+		g.Printf(java.JNIMangle(g.className()))
 	}
 	g.Printf("_")
 	if jm != nil {
@@ -1091,7 +1091,7 @@
 	n := java.JNIMangle(g.javaTypeName(o.Name()))
 	// setter
 	g.Printf("JNIEXPORT void JNICALL\n")
-	g.Printf("Java_%s_%s_set%s(JNIEnv *env, jclass clazz, %s v) {\n", g.jniPkgName(), g.className(), n, g.jniType(o.Type()))
+	g.Printf("Java_%s_%s_set%s(JNIEnv *env, jclass clazz, %s v) {\n", g.jniPkgName(), java.JNIMangle(g.className()), n, g.jniType(o.Type()))
 	g.Indent()
 	g.genJavaToC("v", o.Type(), modeRetained)
 	g.Printf("var_set%s_%s(_v);\n", g.pkgPrefix, o.Name())
@@ -1101,7 +1101,7 @@
 
 	// getter
 	g.Printf("JNIEXPORT %s JNICALL\n", g.jniType(o.Type()))
-	g.Printf("Java_%s_%s_get%s(JNIEnv *env, jclass clazz) {\n", g.jniPkgName(), g.className(), n)
+	g.Printf("Java_%s_%s_get%s(JNIEnv *env, jclass clazz) {\n", g.jniPkgName(), java.JNIMangle(g.className()), n)
 	g.Indent()
 	g.Printf("%s r0 = ", g.cgoType(o.Type()))
 	g.Printf("var_get%s_%s();\n", g.pkgPrefix, o.Name())
diff --git a/bind/testdata/underscores.java.c.golden b/bind/testdata/underscores.java.c.golden
index c617f01..f4f60a1 100644
--- a/bind/testdata/underscores.java.c.golden
+++ b/bind/testdata/underscores.java.c.golden
@@ -21,7 +21,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_underscore_1pkg_Underscore_pkg_underscore_1func(JNIEnv* env, jclass _clazz) {
+Java_underscore_1pkg_Underscore_1pkg_underscore_1func(JNIEnv* env, jclass _clazz) {
     proxyunderscore_pkg__Underscore_func();
 }
 
@@ -46,13 +46,13 @@
 }
 
 JNIEXPORT void JNICALL
-Java_underscore_1pkg_Underscore_pkg_setUnderscore_1var(JNIEnv *env, jclass clazz, jlong v) {
+Java_underscore_1pkg_Underscore_1pkg_setUnderscore_1var(JNIEnv *env, jclass clazz, jlong v) {
     nint _v = (nint)v;
     var_setunderscore_pkg_Underscore_var(_v);
 }
 
 JNIEXPORT jlong JNICALL
-Java_underscore_1pkg_Underscore_pkg_getUnderscore_1var(JNIEnv *env, jclass clazz) {
+Java_underscore_1pkg_Underscore_1pkg_getUnderscore_1var(JNIEnv *env, jclass clazz) {
     nint r0 = var_getunderscore_pkg_Underscore_var();
     jlong _r0 = (jlong)r0;
     return _r0;
