Add better diagnostics for missing Java files.

Vogar can't really tell which of its arguments are Java source
files and which are classes somewhere along the classpath.
However IFF we get to the point of creating class jars AND our
supposed class name looks like a Java source file AND it doesn't
exist THEN we can pretty safely assume it's a missing source file.

Fixes: 239548304
Test: manual vogar runs
Change-Id: I8b98f6d263030f9ff304e4ba653fabf3689e8da7
diff --git a/src/vogar/tasks/BuildActionTask.java b/src/vogar/tasks/BuildActionTask.java
index fd4c43a..04605fd 100644
--- a/src/vogar/tasks/BuildActionTask.java
+++ b/src/vogar/tasks/BuildActionTask.java
@@ -17,6 +17,7 @@
 package vogar.tasks;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -90,7 +91,14 @@
         if (run.debugging) {
             javac.debug();
         }
-        if (javaFile != null) {
+        if (javaFile == null) {
+            if (JAVA_SOURCE_PATTERN.matcher(action.getTargetClass()).find()) {
+                // This is likely a missing source file rather than a class
+                // named something.java....
+                throw new FileNotFoundException("Unlikely classname, assuming missing source file: "
+                    + action.getTargetClass());
+            }
+        } else {
             if (!JAVA_SOURCE_PATTERN.matcher(javaFile.toString()).find()) {
                 throw new CommandFailedException(Collections.<String>emptyList(),
                         Collections.singletonList("Cannot compile: " + javaFile));