{"record":{"id":"e84be243a3b7f940","repo":"alibaba/ARouter","slug":"there-is-no-route-match-the-path-path-in-grou","errorCode":null,"errorMessage":"There is no route match the path [<path>], in group [<group>]","messagePattern":"There is no route match the path \\[<path>\\], in group \\[<group>\\]","errorType":"exception","errorClass":"NoRouteFoundException","httpStatus":null,"severity":"error","filePath":"arouter-api/src/main/java/com/alibaba/android/arouter/core/LogisticsCenter.java","lineNumber":281,"sourceCode":"\n        return Warehouse.routes.containsKey(postcard.getPath());\n    }\n\n    /**\n     * Completion the postcard by route metas\n     *\n     * @param postcard Incomplete postcard, should complete by this method.\n     */\n    public synchronized static void completion(Postcard postcard) {\n        if (null == postcard) {\n            throw new NoRouteFoundException(TAG + \"No postcard!\");\n        }\n\n        RouteMeta routeMeta = Warehouse.routes.get(postcard.getPath());\n        if (null == routeMeta) {\n            // Maybe its does't exist, or didn't load.\n            if (!Warehouse.groupsIndex.containsKey(postcard.getGroup())) {\n                throw new NoRouteFoundException(TAG + \"There is no route match the path [\" + postcard.getPath() + \"], in group [\" + postcard.getGroup() + \"]\");\n            } else {\n                // Load route and cache it into memory, then delete from metas.\n                try {\n                    if (ARouter.debuggable()) {\n                        logger.debug(TAG, String.format(Locale.getDefault(), \"The group [%s] starts loading, trigger by [%s]\", postcard.getGroup(), postcard.getPath()));\n                    }\n\n                    addRouteGroupDynamic(postcard.getGroup(), null);\n\n                    if (ARouter.debuggable()) {\n                        logger.debug(TAG, String.format(Locale.getDefault(), \"The group [%s] has already been loaded, trigger by [%s]\", postcard.getGroup(), postcard.getPath()));\n                    }\n                } catch (Exception e) {\n                    throw new HandlerException(\n                            TAG + \"Fatal exception when loading group meta. [\" + describeFailure(e) + \"]\",\n                            e\n                    );\n                }","sourceCodeStart":263,"sourceCodeEnd":299,"githubUrl":"https://github.com/alibaba/ARouter/blob/84f451d244e3fb1d0e37801de1b9ee2af2f81d68/arouter-api/src/main/java/com/alibaba/android/arouter/core/LogisticsCenter.java#L263-L299","documentation":"completion() looks up the path in Warehouse.routes; if absent and the group has never been loaded (not in groupsIndex), it throws NoRouteFoundException listing the unmatched path and group. This is ARouter's 'route not registered' error — the target @Route annotation is missing, was stripped, or the path string differs.","triggerScenarios":"Navigating to a path with no matching @Route annotation; a typo'd path or mismatched group segment; the module containing the route is not a dependency; release build stripped generated route classes; navigation attempted before ARouter.init() loaded the group maps.","commonSituations":"Dynamic-feature modules whose routes load late; paths built at runtime via string concatenation that don't match the annotation; after renaming a route but not all navigation call sites.","solutions":["Verify a @Route(path=\"...\") exists with exactly the same path (and group prefix) as the one navigated to","Add the module containing the route as a dependency of the app module and re-run ARouter.init()","Check keep rules: -keep class com.alibaba.android.arouter.routes.** { *; } in release builds","Log Warehouse.groupsIndex contents (debuggable mode) to confirm the group was registered"],"exampleFix":"// before\nARouter.getInstance().build(\"/user/detail\").navigation(); // NoRouteFoundException\n// after (target)\n@Route(path = \"/user/detail\")\npublic class UserDetailActivity {...}\n// and defensive nav\nif (ARouter.getInstance().build(\"/user/detail\").exist()) {\n    ARouter.getInstance().build(\"/user/detail\").navigation();\n} else {\n    // fallback to default activity\n}","handlingStrategy":"try-catch","validationCode":"boolean registered = ARouter.getInstance().build(path).exist();\nif (!registered) {\n    // fallback before navigating\n}","typeGuard":null,"tryCatchPattern":"try {\n    ARouter.getInstance().build(path).navigation();\n} catch (NoRouteFoundException e) {\n    Log.e(TAG, \"no route for \" + path + \", using fallback\", e);\n    context.startActivity(new Intent(context, FallbackActivity.class));\n}","preventionTips":["Verify every navigation path matches a @Route annotation exactly","Add the route's module as an app dependency","Add proguard keeps for generated route classes","Enable ARouter.debuggable() and dump groupsIndex when debugging path mismatches"],"tags":["arouter","navigation","route-not-found"],"backgroundTag":"resource-not-found","analyzedSha":"84f451d244e3fb1d0e37801de1b9ee2af2f81d68","analyzedAt":"2026-09-06T13:30:41.084Z","contentChangedAt":"2026-09-06T13:30:41.084Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}