diff --git a/src/com/facebook/buck/java/JavaBinaryRule.java b/src/com/facebook/buck/java/JavaBinaryRule.java
index 666802c..a0368b2 100644
--- a/src/com/facebook/buck/java/JavaBinaryRule.java
+++ b/src/com/facebook/buck/java/JavaBinaryRule.java
@@ -39,13 +39,11 @@
 import com.facebook.buck.util.DefaultDirectoryTraverser;
 import com.facebook.buck.util.DirectoryTraverser;
 import com.facebook.buck.util.ProjectFilesystem;
-import com.google.common.base.Joiner;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSetMultimap;
 import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.Iterables;
 
 import java.io.IOException;
 import java.util.List;
@@ -184,11 +182,8 @@
         "Must specify a main class for %s in order to to run it.",
         getBuildTarget().getFullyQualifiedName());
 
-    return String.format("java -classpath %s %s",
-        Joiner.on(':').join(Iterables.transform(
-            getTransitiveClasspathEntries().values(),
-            projectFilesystem.getPathRelativizer())),
-        mainClass);
+    return String.format("java -jar %s",
+        projectFilesystem.getPathRelativizer().apply(getOutputFile()));
   }
 
   public static class Builder extends AbstractBuildRuleBuilder<JavaBinaryRule> {
diff --git a/test/com/facebook/buck/java/JavaBinaryRuleTest.java b/test/com/facebook/buck/java/JavaBinaryRuleTest.java
index 196c5e4..a0ddd8a 100644
--- a/test/com/facebook/buck/java/JavaBinaryRuleTest.java
+++ b/test/com/facebook/buck/java/JavaBinaryRuleTest.java
@@ -60,7 +60,7 @@
         .addVisibilityPattern(BuildTargetPattern.MATCH_ALL));
 
     // java_library //java/com/facebook/base:base
-    JavaLibraryRule javaLibraryRule = ruleResolver.buildAndAddToIndex(
+    ruleResolver.buildAndAddToIndex(
         DefaultJavaLibraryRule.newJavaLibraryRuleBuilder(new FakeAbstractBuildRuleBuilderParams())
         .setBuildTarget(BuildTargetFactory.newInstance("//java/com/facebook/base:base"))
         .addSrc("java/com/facebook/base/Base.java")
@@ -79,10 +79,9 @@
     // Each classpath entry is specified via its absolute path so that the executable command can be
     // run from a /tmp directory, if necessary.
     String expectedClasspath =
-        basePath + PATH_TO_GUAVA_JAR + ":" +
-        basePath + javaLibraryRule.getPathToOutputFile();
+        basePath + javaBinaryRule.getPathToOutputFile();
 
-    String expectedCommand = String.format("java -classpath %s com.facebook.base.Main",
+    String expectedCommand = String.format("java -jar %s",
         expectedClasspath);
     ProjectFilesystem projectFilesystem = createMock(ProjectFilesystem.class);
     Function<String, Path> pathRelativizer = new Function<String, Path>() {
diff --git a/test/com/facebook/buck/shell/GenruleTest.java b/test/com/facebook/buck/shell/GenruleTest.java
index 9228d55..9669807 100644
--- a/test/com/facebook/buck/shell/GenruleTest.java
+++ b/test/com/facebook/buck/shell/GenruleTest.java
@@ -332,10 +332,10 @@
 
     // Verify that the correct cmd was created.
     Path expectedClasspath = getAbsolutePathInBase(
-        GEN_DIR + "/java/com/facebook/util/lib__util__output/util.jar");
+        GEN_DIR + "/java/com/facebook/util/ManifestGenerator.jar");
 
     String expectedCmd = String.format(
-        "java -classpath %s com.facebook.util.ManifestGenerator $OUT",
+        "java -jar %s $OUT",
         expectedClasspath);
     assertEquals(expectedCmd, transformedString);
   }
@@ -357,9 +357,9 @@
 
     // Verify that the correct cmd was created.
     Path expectedClasspath = getAbsolutePathInBase(
-        GEN_DIR + "/java/com/facebook/util/lib__util__output/util.jar");
+        GEN_DIR + "/java/com/facebook/util/ManifestGenerator.jar");
     String expectedCmd = String.format(
-        "java -classpath %s com.facebook.util.ManifestGenerator $OUT",
+        "java -jar %s $OUT",
         expectedClasspath);
     assertEquals(expectedCmd, transformedString);
   }
@@ -412,9 +412,9 @@
 
     // Verify that the correct cmd was created.
     Path expectedClasspath = getAbsolutePathInBase(
-        GEN_DIR + "/java/com/facebook/util/lib__util__output/util.jar");
+        GEN_DIR + "/java/com/facebook/util/ManifestGenerator.jar");
     String expectedCmd = String.format(
-        "java -classpath %s com.facebook.util.ManifestGenerator $OUT",
+        "java -jar %s $OUT",
         expectedClasspath);
     assertEquals(expectedCmd, transformedString);
   }
