diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt
index 978d465..75dcab5 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt
@@ -59,13 +59,18 @@
             SourceJarCreator(
                 sourceJarPath
             ).also { creator ->
+                // This check asserts that source jars were unpacked.
+                check(
+                    command.inputs.sourceJarsList.isEmpty() ||
+                            Files.exists(Paths.get(command.directories.temp).resolve("_srcjars"))
+                )
                 listOf(
+                    // Any (input) source jars should already have been expanded so do not add them here.
                     command.inputs.javaSourcesList.stream(),
-                    command.inputs.kotlinSourcesList.stream(),
-                    command.inputs.sourceJarsList.stream()
-                ).stream().flatMap { it.map { Paths.get(it) } }.also {
-                    creator.addSources(it)
-                }
+                    command.inputs.kotlinSourcesList.stream()
+                ).stream()
+                    .flatMap { it.map { Paths.get(it) } }
+                    .also { creator.addSources(it) }
                 creator.execute()
             }
         }
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/utils/jars/SourceJarCreator.kt b/kotlin/builder/src/io/bazel/kotlin/builder/utils/jars/SourceJarCreator.kt
index a0a7c95..b30431b 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/utils/jars/SourceJarCreator.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/utils/jars/SourceJarCreator.kt
@@ -129,13 +129,13 @@
      * Add a single source jar
      */
     private fun addSourceJar(path: Path) {
-        if(verbose) {
+        if (verbose) {
             System.err.println("adding source jar: $path")
         }
         JarFile(path.toFile()).use { jar ->
             for (entry in jar.entries()) {
                 if (!entry.isDirectory) {
-                    if (entry.name.endsWith(".kt") or entry.name.endsWith(".java")) {
+                    if (isJavaSourceLike(entry.name)) {
                         jar.getInputStream(entry).readBytes(entry.size.toInt()).also {
                             addEntry(entry.name, path, it)
                         }
@@ -162,7 +162,13 @@
         }
         filenameHelper.visitDeferredEntries { path, jarFilename, bytes ->
             if (jarFilename == null) {
-                System.err.println("could not determine jar entry name for $path. Body:\n${bytes.toString(Charset.defaultCharset())}}")
+                if (verbose) {
+                    val body = bytes.toString(Charset.defaultCharset())
+                    System.err.println("""could not determine jar entry name for $path. Body:\n$body}""")
+                } else {
+                    // if not verbose silently add files at the root.
+                    addEntry(path.fileName.toString(), path, bytes)
+                }
             } else {
                 System.err.println("adding deferred source file $path -> $jarFilename")
                 addEntry(jarFilename, path, bytes)
