diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go
index 8c78217..3260b1e 100644
--- a/bp2build/java_library_conversion_test.go
+++ b/bp2build/java_library_conversion_test.go
@@ -15,7 +15,6 @@
 package bp2build
 
 import (
-	"fmt"
 	"testing"
 
 	"android/soong/android"
@@ -143,26 +142,6 @@
 	})
 }
 
-func TestJavaLibraryFailsToConvertLibsWithNoSrcs(t *testing.T) {
-	runJavaLibraryTestCase(t, Bp2buildTestCase{
-		ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."),
-		Blueprint: `java_library {
-    name: "java-lib-1",
-    libs: ["java-lib-2"],
-    sdk_version: "current",
-    bazel_module: { bp2build_available: true },
-}
-
-java_library {
-    name: "java-lib-2",
-    srcs: ["a.java"],
-    sdk_version: "current",
-    bazel_module: { bp2build_available: false },
-}`,
-		ExpectedBazelTargets: []string{},
-	})
-}
-
 func TestJavaLibraryPlugins(t *testing.T) {
 	runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
 		Blueprint: `java_library {
@@ -869,6 +848,30 @@
 	})
 }
 
+func TestJavaLibraryLibsWithNoSrcs(t *testing.T) {
+	runJavaLibraryTestCase(t, Bp2buildTestCase{
+		Description: "java_library that has libs but no srcs",
+		Blueprint: `java_library {
+    name: "java-lib-1",
+    libs: ["java-lib-2"],
+    sdk_version: "current",
+    bazel_module: { bp2build_available: true },
+}
+
+java_library{
+    name: "java-lib-2",
+    bazel_module: { bp2build_available: false },
+}
+`,
+		ExpectedBazelTargets: []string{
+			MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
+				"sdk_version": `"current"`,
+			}),
+			MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
+		},
+	})
+}
+
 func TestJavaLibraryArchVariantDeps(t *testing.T) {
 	runJavaLibraryTestCase(t, Bp2buildTestCase{
 		Description: "java_library with arch variant libs",
diff --git a/java/java.go b/java/java.go
index 3567dbe..48e13fe 100644
--- a/java/java.go
+++ b/java/java.go
@@ -2886,9 +2886,8 @@
 // depending on the module type.
 type bp2BuildJavaInfo struct {
 	// separates dependencies into dynamic dependencies and static dependencies.
-	DepLabels       *javaDependencyLabels
-	hasKotlin       bool
-	onlyProtoInSrcs bool
+	DepLabels *javaDependencyLabels
+	hasKotlin bool
 }
 
 func javaXsdTargetName(xsd android.XsdConfigBp2buildTargets) string {
@@ -2951,9 +2950,6 @@
 
 	staticDeps.Append(srcPartitions[xsdSrcPartition])
 
-	_, protoInSrcs := srcPartitions[protoSrcPartition]
-	onlyProtoInSrcs := protoInSrcs && len(srcPartitions) == 1
-
 	if !srcPartitions[logtagSrcPartition].IsEmpty() {
 		logtagsLibName := m.Name() + "_logtags"
 		ctx.CreateBazelTargetModule(
@@ -3091,9 +3087,8 @@
 	}
 
 	bp2BuildInfo := &bp2BuildJavaInfo{
-		DepLabels:       depLabels,
-		hasKotlin:       hasKotlin,
-		onlyProtoInSrcs: onlyProtoInSrcs,
+		DepLabels: depLabels,
+		hasKotlin: hasKotlin,
 	}
 
 	return commonAttrs, bp2BuildInfo, true
@@ -3137,17 +3132,12 @@
 	if !commonAttrs.Srcs.IsEmpty() {
 		deps.Append(exports) // we should only append these if there are sources to use them
 	} else if !deps.IsEmpty() {
-		if bp2BuildInfo.onlyProtoInSrcs {
-			// java_library does not accept deps when there are no srcs because
-			// there is no compilation happening, but it accepts exports.
-			// bp2build converts this module to 2 java_libraries + java_xx_proto_library + proto_library
-			// the non-empty deps here are not necessary for compiling the protos, in which case
-			// they're unnecessary as deps on the java_library as well since they aren't
-			// being propagated to any dependencies. So we can drop deps here.
-			deps = bazel.LabelListAttribute{}
-		} else {
-			ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.")
-		}
+		// java_library does not accept deps when there are no srcs because
+		// there is no compilation happening, but it accepts exports.
+		// The non-empty deps here are unnecessary as deps on the java_library
+		// since they aren't being propagated to any dependencies.
+		// So we can drop deps here.
+		deps = bazel.LabelListAttribute{}
 	}
 	var props bazel.BazelTargetModuleProperties
 	attrs := &javaLibraryAttributes{
