diff --git a/dacapo/run.py b/dacapo/run.py
index a8667643c442e637132e50240d84613e329ff7d6..7fbfb6fe9d877c91dd09901ec5c5a1de64628b80 100644
--- a/dacapo/run.py
+++ b/dacapo/run.py
@@ -100,8 +100,9 @@ class Run(object):
       parser = Parser()
       cmd = self._cmd_builder.construct_static_analysis_cmd(bm)
       out = util.execute_cmd(cmd)
-      results, _, _ = parser.parse_static_analysis(out)
-      self._run_loaded(bm, results)
+      results, classes, _ = parser.parse_static_analysis(out)
+      filter_results = {k: v for k, v in results.iteritems() if k in classes}
+      self._run_loaded(bm, filter_results)
     else:
       self._run_from_jar(bm, self._cmd_builder.dacapo)
 
@@ -136,17 +137,12 @@ class Run(object):
     """Runs static analysis from jar file."""
 
     logging.debug('Running static analysis from jar file.')
-
     classes = self._get_classes_from_jar(jar_file)
-
     list_of_classes = '\n'.join(['%s %s' % (jar, cl) for cl, jar
                                  in classes.iteritems()])
     cmd = self._cmd_builder.construct_ckjm_cmd()
-
     out = util.execute_cmd(cmd, False, input_value=list_of_classes)
-
     results = out.splitlines()
-
     self.report.add_static_analysis(bm, results)
 
   def _get_classes_from_jar(self, jar_file):
diff --git a/tests/run_test.py b/tests/run_test.py
index 54cbd1824f9ce9199951bda2fba362f6ad6308a9..b20491ddc7cf924da965b84c567cc3908e69cea4 100644
--- a/tests/run_test.py
+++ b/tests/run_test.py
@@ -70,10 +70,10 @@ class TestRun(unittest.TestCase):
 
   @mock.patch('dacapo.util.execute_cmd')
   def test_run_ckjm(self, mock_execute_cmd):
-    loaded_classes = '[Loaded Bar.class from file:foo.jar]'
+    execution_output = 'ignore'
     ckjm_output = '''Bar 1 2 3 4 5 6 7 8'''
 
-    mock_execute_cmd.side_effect = [loaded_classes, ckjm_output]
+    mock_execute_cmd.side_effect = [execution_output, ckjm_output]
 
     my_run = Run()
     my_run.config(static_analysis=True, bms='fop')
@@ -93,5 +93,25 @@ class TestRun(unittest.TestCase):
     self.assertEqual(result['ca'][0], '7')
     self.assertEqual(result['npm'][0], '8')
 
+  @mock.patch('dacapo.util.execute_cmd')
+  @mock.patch.object(Run, '_run_loaded')
+  def test_filtered_classes_from_ckjm(self, mock_run_loaded, mock_execute_cmd):
+    loaded_classes = '\n'.join(['[Loaded Bar from file:foo.jar]',
+                                '0  1   ! Bar::run (198 bytes)',
+                                '[Loaded Baz from file:foo.jar]'
+                               ])
+
+    ckjm_output = '''Bar 1 2 3 4 5 6 7 8'''
+
+    mock_execute_cmd.side_effect = [loaded_classes, ckjm_output]
+
+    my_run = Run()
+    my_run.config(static_analysis=True, bms='fop')
+
+    my_run.run_ckjm()
+
+    mock_run_loaded.assert_called_with('fop', {'Bar': 'file:foo.jar'})
+
+
 if __name__ == '__main__':
   unittest.main()