diff --git a/src/genjava/gradle_project.py b/src/genjava/gradle_project.py
index bdb0a83153ade764a71da0406d46b4da7f4dd8b3..3bbbc05fcca42dbc131a7a587aac1e2fa15bc517 100644
--- a/src/genjava/gradle_project.py
+++ b/src/genjava/gradle_project.py
@@ -11,6 +11,7 @@ import shutil
 import subprocess
 from catkin_pkg.packages import find_packages
 import rospkg
+import rosjava_build_tools.catkin
 
 ##############################################################################
 # Utils
@@ -118,10 +119,12 @@ def create_msg_package_index():
     package_index = {}
     ros_paths = rospkg.get_ros_package_path()
     ros_paths = [x for x in ros_paths.split(':') if x]
+    # packages that don't properly identify themselves as message packages (fix upstream).
     for path in reversed(ros_paths):  # make sure we pick up the source overlays last
         for unused_package_path, package in find_packages(path).items():
             if ('message_generation' in [dep.name for dep in package.build_depends] or
-               'genmsg' in [dep.name for dep in package.build_depends]):
+                'genmsg' in [dep.name for dep in package.build_depends] or
+                package.name in rosjava_build_tools.catkin.message_package_whitelist):
 #                 print(package.name)
 #                 print("  version: %s" % package.version)
 #                 print("  dependencies: ")