diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
index d73f5c0..e7e5fef 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
@@ -16,9 +16,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Multimap;
-import com.google.devtools.build.lib.Constants;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration.DefaultLabelConverter;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsConverter;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode;
@@ -28,11 +26,9 @@
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaClasspathMode;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaOptimizationMode;
-import com.google.devtools.common.options.Converter;
 import com.google.devtools.common.options.Converters.StringSetConverter;
 import com.google.devtools.common.options.EnumConverter;
 import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionsParsingException;
 import com.google.devtools.common.options.TriState;
 
 import java.util.HashMap;
@@ -47,75 +43,6 @@
 public class JavaOptions extends FragmentOptions {
   public static final String DEFAULT_LANGTOOLS = "//tools/jdk:langtools";
 
-  /** Converter for --javabase and --host_javabase. */
-  public static class JavabaseConverter implements Converter<String> {
-    @Override
-    public String convert(String input) throws OptionsParsingException {
-      return input.isEmpty() ? Constants.TOOLS_REPOSITORY + "//tools/jdk:jdk" : input;
-    }
-
-    @Override
-    public String getTypeDescription() {
-      return "a string";
-    }
-  }
-
-  /** Converter for --java_langtools. */
-  public static class LangtoolsConverter extends DefaultLabelConverter {
-    public LangtoolsConverter() {
-      super(Constants.TOOLS_REPOSITORY + DEFAULT_LANGTOOLS);
-    }
-  }
-
-  /** Converter for --javac_bootclasspath. */
-  public static class BootclasspathConverter extends DefaultLabelConverter {
-    public BootclasspathConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:bootclasspath");
-    }
-  }
-
-  /** Converter for --javac_extdir. */
-  public static class ExtdirConverter extends DefaultLabelConverter {
-    public ExtdirConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:extdir");
-    }
-  }
-
-  /** Converter for --javabuilder_top. */
-  public static class JavaBuilderConverter extends DefaultLabelConverter {
-    public JavaBuilderConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:JavaBuilder_deploy.jar");
-    }
-  }
-
-  /** Converter for --singlejar_top. */
-  public static class SingleJarConverter extends DefaultLabelConverter {
-    public SingleJarConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:SingleJar_deploy.jar");
-    }
-  }
-
-  /** Converter for --genclass_top. */
-  public static class GenClassConverter extends DefaultLabelConverter {
-    public GenClassConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:GenClass_deploy.jar");
-    }
-  }
-
-  /** Converter for --ijar_top. */
-  public static class IjarConverter extends DefaultLabelConverter {
-    public IjarConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:ijar");
-    }
-  }
-
-  /** Converter for --java_toolchain. */
-  public static class JavaToolchainConverter extends DefaultLabelConverter {
-    public JavaToolchainConverter() {
-      super(Constants.TOOLS_REPOSITORY + "//tools/jdk:toolchain");
-    }
-  }
-
   /**
    * Converter for the --javawarn option.
    */
@@ -172,8 +99,7 @@
   }
 
   @Option(name = "javabase",
-      defaultValue = "",
-      converter = JavabaseConverter.class,
+      defaultValue = "@bazel_tools//tools/jdk:jdk",
       category = "version",
       help = "JAVABASE used for the JDK invoked by Blaze. This is the "
           + "JAVABASE which will be used to execute external Java "
@@ -181,15 +107,14 @@
   public String javaBase;
 
   @Option(name = "java_toolchain",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:toolchain",
       category = "version",
-      converter = JavaToolchainConverter.class,
+      converter = LabelConverter.class,
       help = "The name of the toolchain rule for Java.")
   public Label javaToolchain;
 
   @Option(name = "host_javabase",
-      defaultValue = "",
-      converter = JavabaseConverter.class,
+      defaultValue = "@bazel_tools//tools/jdk:jdk",
       category = "version",
       help = "JAVABASE used for the host JDK. This is the JAVABASE which is used to execute "
            + " tools during a build.")
@@ -290,51 +215,51 @@
   public StrictDepsMode strictJavaDeps;
 
   @Option(name = "javabuilder_top",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:JavaBuilder_deploy.jar",
       category = "version",
-      converter = JavaBuilderConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the filegroup that contains the JavaBuilder jar.")
   public Label javaBuilderTop;
 
   @Option(name = "singlejar_top",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:SingleJar_deploy.jar",
       category = "version",
-      converter = SingleJarConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the filegroup that contains the SingleJar jar.")
   public Label singleJarTop;
 
   @Option(name = "genclass_top",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:GenClass_deploy.jar",
       category = "version",
-      converter = GenClassConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the filegroup that contains the GenClass jar.")
   public Label genClassTop;
 
   @Option(name = "ijar_top",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:ijar",
       category = "version",
-      converter = IjarConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the filegroup that contains the ijar binary.")
   public Label iJarTop;
 
   @Option(name = "java_langtools",
-      defaultValue = "",
+      defaultValue = "@bazel_tools" + DEFAULT_LANGTOOLS,
       category = "version",
-      converter = LangtoolsConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the rule that produces the Java langtools jar.")
   public Label javaLangtoolsJar;
 
   @Option(name = "javac_bootclasspath",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:bootclasspath",
       category = "version",
-      converter = BootclasspathConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the rule that produces the bootclasspath jars for javac to use.")
   public Label javacBootclasspath;
 
   @Option(name = "javac_extdir",
-      defaultValue = "",
+      defaultValue = "@bazel_tools//tools/jdk:extdir",
       category = "version",
-      converter = ExtdirConverter.class,
+      converter = LabelConverter.class,
       help = "Label of the rule that produces the extdir for javac to use.")
   public Label javacExtdir;
 
@@ -419,6 +344,7 @@
     host.singleJarTop = singleJarTop;
     host.genClassTop = genClassTop;
     host.iJarTop = iJarTop;
+    host.javacBootclasspath = javacBootclasspath;
 
     // Java builds often contain complicated code generators for which
     // incremental build performance is important.
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java
index 8947c84..d8a4c56 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java
@@ -18,6 +18,8 @@
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.config.DefaultsPackage;
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
+import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
+import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
@@ -33,6 +35,11 @@
         ImmutableList.<Class<? extends OptionsBase>>of(
             BuildConfiguration.Options.class, optionsClass));
     parser.parse(options);
+
+    InvocationPolicyEnforcer enforcer =
+        new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+    enforcer.enforce(parser);
+
     return DefaultsPackage.getDefaultsPackageContent(BuildOptions.of(
         ImmutableList.<Class<? extends FragmentOptions>>of(
             BuildConfiguration.Options.class, optionsClass), parser));
