diff --git a/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala b/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala
index 56cfb7a46..282afa509 100644
--- a/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala
+++ b/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala
@@ -229,15 +229,17 @@ object ScalafixPlugin extends AutoPlugin {
     Def.taskDyn {
       compile.all(filter).value // trigger compilation
       val classpath = classDirectory.all(filter).value.asPath
-      val directoriesToFix: Seq[File] =
-        unmanagedSourceDirectories.all(filter).value.flatten.collect {
-          case p if p.exists() => p.getAbsoluteFile
-        }
+      val sourcesToFix = for {
+        sources <- unmanagedSources.all(filter).value
+        source <- sources
+        if source.exists()
+        if canFix(source)
+      } yield source
       val options: Seq[String] = List("--classpath", classpath) ++ extraOptions
       scalafixTaskImpl(
         inputArgs,
         options,
-        directoriesToFix,
+        sourcesToFix,
         thisProject.value.id,
         streams.value
       )
@@ -285,13 +287,19 @@ object ScalafixPlugin extends AutoPlugin {
             )
         }
         val finalArgs = args ++ files.map(_.getAbsolutePath)
-        val nonBaseArgs = finalArgs.filterNot(baseArgs).mkString(" ")
+        val nonBaseArgs = args.filterNot(baseArgs).mkString(" ")
         log.info(s"Running scalafix $nonBaseArgs")
         main.main(finalArgs.toArray)
       }
     }
   }
 
+  private def canFix(file: File): Boolean = {
+    val path = file.getPath
+    path.endsWith(".scala") ||
+    path.endsWith(".sbt")
+  }
+
   private[scalafix] implicit class XtensionFormatClasspath(paths: Seq[File]) {
     def asPath: String =
       paths.toIterator
diff --git a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt
index 31c76466e..2c2ce76a4 100644
--- a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt
+++ b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt
@@ -9,6 +9,7 @@ inThisBuild(
 lazy val root = project
   .in(file("."))
   .aggregate(
+    javaProject,
     customSourceroot,
     scala211,
     scala210,
@@ -28,6 +29,9 @@ lazy val customSourceroot = project.settings(
   scalaVersion := Versions.scala212,
   scalafixSourceroot := sourceDirectory.value
 )
+lazy val javaProject = project.settings(
+  scalaVersion := Versions.scala212
+)
 
 TaskKey[Unit]("check") := {
   val s = streams.value
diff --git a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/javaProject/src/main/java/example/Example.java b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/javaProject/src/main/java/example/Example.java
new file mode 100644
index 000000000..43a7cbc7c
--- /dev/null
+++ b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/javaProject/src/main/java/example/Example.java
@@ -0,0 +1,7 @@
+package example;
+
+class Foo  {
+    public static void main(String[] args) {
+        System.out.println(args);
+    }
+}
diff --git a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test
index 8c80a20ab..4090cff97 100644
--- a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test
+++ b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test
@@ -3,6 +3,7 @@
 -> scalafixTest ProcedureSyntax
 > scalafix ProcedureSyntax
 > scalafixTest ProcedureSyntax
+> javaProject/scalafix ProcedureSyntax
 # Should fail because 2.10 has no semanticdb
 # Other >2.10 projects should succeed
 -> scalafix