Remove cargo-culted workaround for JDK-6440786

ZipOutputStream has been able to create empty zip files since JDK7:
https://bugs.openjdk.java.net/browse/JDK-6440786

--
MOS_MIGRATED_REVID=139089919
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java
index 38b00fb..5934676 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java
@@ -14,6 +14,8 @@
 
 package com.google.devtools.build.java.turbine.javac;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
@@ -28,8 +30,10 @@
 import com.google.devtools.build.java.turbine.javac.ZipOutputFileManager.OutputFileObject;
 import com.sun.tools.javac.util.Context;
 import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
@@ -69,7 +73,10 @@
   }
 
   public static Result compile(TurbineOptions turbineOptions) throws IOException {
-    try (JavacTurbine turbine = new JavacTurbine(new PrintWriter(System.err), turbineOptions)) {
+    try (JavacTurbine turbine =
+        new JavacTurbine(
+            new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.err, UTF_8))),
+            turbineOptions)) {
       return turbine.compile();
     }
   }
@@ -236,7 +243,6 @@
     try (OutputStream fos = Files.newOutputStream(outputJar);
         ZipOutputStream zipOut =
             new ZipOutputStream(new BufferedOutputStream(fos, ZIPFILE_BUFFER_SIZE))) {
-      boolean hasEntries = false;
       for (Map.Entry<String, OutputFileObject> entry : files.entrySet()) {
         if (entry.getValue().location != StandardLocation.CLASS_OUTPUT) {
           continue;
@@ -250,11 +256,6 @@
           bytes = processBytecode(bytes);
         }
         ZipUtil.storeEntry(name, bytes, zipOut);
-        hasEntries = true;
-      }
-      if (!hasEntries) {
-        // ZipOutputStream refuses to create a completely empty zip file.
-        ZipUtil.storeEntry("dummy", new byte[0], zipOut);
       }
     }
   }
diff --git a/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java b/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java
index acc9d59..30c8e13 100644
--- a/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java
+++ b/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java
@@ -40,10 +40,12 @@
 import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.util.Context;
 import java.io.BufferedInputStream;
+import java.io.BufferedWriter;
 import java.io.IOError;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.net.URI;
@@ -129,7 +131,9 @@
   void compile() throws IOException {
     optionsBuilder.addSources(ImmutableList.copyOf(Iterables.transform(sources, TO_STRING)));
     try (JavacTurbine turbine =
-        new JavacTurbine(new PrintWriter(System.err), optionsBuilder.build())) {
+        new JavacTurbine(
+            new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.err, UTF_8))),
+            optionsBuilder.build())) {
       assertThat(turbine.compile()).isEqualTo(Result.OK_WITH_REDUCED_CLASSPATH);
     }
   }
@@ -442,7 +446,13 @@
     JavacTool tool = JavacTool.create();
 
     JavacTask task =
-        tool.getTask(new PrintWriter(System.err, true), fm, null, options, null, units);
+        tool.getTask(
+            new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.err, UTF_8)), true),
+            fm,
+            null,
+            options,
+            null,
+            units);
     assertThat(task.call()).isTrue();
 
     try (JarOutputStream jos = new JarOutputStream(Files.newOutputStream(jar))) {
@@ -538,7 +548,9 @@
     optionsBuilder.addSources(ImmutableList.copyOf(Iterables.transform(sources, TO_STRING)));
 
     try (JavacTurbine turbine =
-        new JavacTurbine(new PrintWriter(System.err), optionsBuilder.build())) {
+        new JavacTurbine(
+            new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.err, UTF_8))),
+            optionsBuilder.build())) {
       assertThat(turbine.compile()).isEqualTo(Result.OK_WITH_REDUCED_CLASSPATH);
       Context context = turbine.context;
 
@@ -625,7 +637,9 @@
     optionsBuilder.addSources(ImmutableList.copyOf(Iterables.transform(sources, TO_STRING)));
 
     try (JavacTurbine turbine =
-        new JavacTurbine(new PrintWriter(System.err), optionsBuilder.build())) {
+        new JavacTurbine(
+            new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.err, UTF_8))),
+            optionsBuilder.build())) {
       assertThat(turbine.compile()).isEqualTo(Result.OK_WITH_FULL_CLASSPATH);
       Context context = turbine.context;
 
@@ -1067,7 +1081,7 @@
     // don't set up any source files
     compile();
     Map<String, byte[]> outputs = collectOutputs();
-    assertThat(outputs.keySet()).containsExactly("dummy");
+    assertThat(outputs.keySet()).isEmpty();
   }
 
   /** An annotation processor that violates the contract. */