ARouter icon indicating copy to clipboard operation
ARouter copied to clipboard

真正解决"There is no route match the path [/xxx/xxx], in group [xxx][ ]"

Open Blincheng opened this issue 5 years ago • 44 comments

看了一下还是有很多人也遇到这个问题,这边给大家一个思路,一定能解决问题:

  1. 首先确定你的项目是用java还是Kotlin开发,如果是java,build配置如下: android { defaultConfig { javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } } } dependencies { implementation 'com.alibaba:arouter-api:x.x.x' annotationProcessor 'com.alibaba:arouter-compiler:x.x.x' } 但是如果是Kotlin开发,那就不是这样配置了,我就是在这里翻车的,具体配置如下: apply plugin: 'kotlin-kapt' kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } implementation "com.alibaba:arouter-api:$rootProject.ext.arouterVersion" kapt "com.alibaba:arouter-compiler:$rootProject.ext.arouterCompilerVersion" 还需要注意的是你的每个需要跳转的module都要配置哦(不一定要全部module,比如jarlib等,配置干啥呢?),我感觉基本就能解决你的问题了~如果还不行,那继续
  2. 第二点要注意的是路径配置,每个module的group(默认路径的第一级)一定要不一样。比如你的app module有个页面可以用@Route(path="/app/activity") 然后有个login module中的页面就不要用/app开头了,可以用@Route(path="/add/activity")这样子的。 3.如果上面2点还不能解决你的问题,那建议细心的重新看文档再集成一遍吧~

希望大家都能快速的解决问题,tks

Blincheng avatar Mar 27 '19 03:03 Blincheng

java,build配置 第一次运行页面跳转正常,再次编译就出现no route match the path

GuardYang avatar Apr 11 '19 01:04 GuardYang

同一个module一样也会报ARouter::There is no route match the path [/xx/xxx], in group [xx][ ]

MapleSunFLY avatar Jul 12 '19 07:07 MapleSunFLY

关键还是这句话:每个需要跳转的module都要配置哦

dansaka avatar Jul 15 '19 10:07 dansaka

嗯,好像还有挺多人在测试调研的时候犯了一个很容易出的错,看看你是不是。 你的项目有3个module,分别是app、bmodule 、cmodule。 然后你想测app中的页面唤起bmodule、cmodule中的一个页面,测试后好像不行? 不知道你在测测试调研的时候 有没有注意到你的app是否都dependencies了b和c呢? 如果没有这个操作,那么单独的b、c都没有被打包到apk中,怎么跳转呢? 所以一般是app dependencies b和c 然后b、c没有依赖关系,看a是都可以跳转bc,bc是否可以互相跳转。

Blincheng avatar Jul 22 '19 09:07 Blincheng

我遇到的问题真的是各种都有: 1,java.lang.NoClassDefFoundError: Failed resolution of: Lcom/alibaba/android/arouter/routes/ARouter$$Group$$user;这个问题直接开始就崩溃了,这是debug包。 2,同一个组件下的类有些能跳转有些就跳转不了。 The group [user] has already been loaded, trigger by [/user/me][ ] ARouter::There is no route match the path [/user/me], in group [user][ ] 小写的找不到,然后换了个大写的从新运行一下就可以 The group [user] starts loading, trigger by [/user/Me][ ] The group [user] has already been loaded, trigger by [/user/Me][ ] 同样是user底下的 这两个就找不到了 ARouter::There is no route match the path [/user/LROrderCenter], in group [user][ ] ARouter::There is no route match the path [/user/mySkills], in group [user][ ] 真的无语,改的都快崩溃了 麻烦哪位大神帮帮慢 QQ:1336814364

JumpingError avatar Aug 06 '19 08:08 JumpingError

一般这种情况是Arouter 缓存机制造成得。推荐clean或者卸载已经安装得软件。

inPeige avatar Aug 30 '19 09:08 inPeige

刚写demo 一直出这个问题。搜到这个回答,都按照要求查了一遍,没发现什么写法上的错误。 然后我发现工程目录依赖关系好像有点问题:aapp bmoudle cmoudle 还有个basemoudle。 basemoudle 引入了依赖。 bmoudle,cmoudle依赖了basemoudle。 然后运行后就提示这个问题。后来bmoudle,cmoudle都引入依赖。把basemoudle中的删掉后就没问题了。

Jazero avatar Sep 12 '19 08:09 Jazero

最好是一级路径和二级路径都不相同!!!!我在获取Fragment的时候,由于path的一级路径相同,一直报找不到!!! 太坑了!!!

StarkSongV avatar Nov 09 '19 09:11 StarkSongV

arouter一些缓存生成的位置比较特殊, 在module的build目录里,执行clean后无法清除arouter的缓存,必须手动删除module的build目录。

protectedMan avatar Nov 21 '19 02:11 protectedMan

是要每个支持跳转的module都必须单独依赖ARouter么? 我只有这样单独添加依赖才能跳转成功

AKMaS avatar Mar 08 '20 15:03 AKMaS

如果多次确定自己的配置正确还出现此错误,考虑可能是当前项目的 gradle 版本和 ARouter 的版本不匹配也会出现此错误。如果你的 gradle 版本较高还出现此错误,请检查 ARouter 的版本,最好使用最新版本。我这边之前就是用了比较旧的版本导致一直出现这个错误,但是配置是完全正确的。记得arouter-api 和 arouter-compiler 都需要升级到最新版本。

wanglejun avatar Jun 03 '20 14:06 wanglejun

同一个module一样也会报ARouter::There is no route match the path [/xx/xxx], in group [xx][ ]

宿主moudle的一级目录名称不要与宿主package的最后一个词重复

tianshi-dalian avatar Jun 29 '20 08:06 tianshi-dalian

遇到这个问题的同学请仔细检查是否在每个build.gradle文件中都正确设置了以下代码(kotlin项目,java项目参考修改)

kapt {
    arguments {
        arg("moduleName", project.getName())
    }
}


dependencies {
//...
    kapt 'com.alibaba:arouter-compiler:1.1.4'
}

⚠️注意!arouter-compiler 这个依赖必须在build.gradle中声明,只在base_module中声明然后引用base_module中引用是无效的!

最后这句话解决了我的问题: ⚠️注意!arouter-compiler 这个依赖必须在build.gradle中声明,只在base_module中声明然后引用base_module中引用是无效的! 调试半天不知道问题出现在,谢谢!

yanchengdeng avatar Jul 30 '20 02:07 yanchengdeng

最好是一级路径和二级路径都不相同!!!!我在获取Fragment的时候,由于path的一级路径相同,一直报找不到!!! 太坑了!!!

感谢老哥,我按照你说的改了就好了

funcodingdev avatar Aug 09 '20 12:08 funcodingdev

我也遇到了,卸载清缓存就好了,不清楚怎么回事

tekabo avatar Sep 01 '20 03:09 tekabo

遇到这个问题的同学请仔细检查是否在每个build.gradle文件中都正确设置了以下代码(kotlin项目,java项目参考修改)

kapt {
    arguments {
        arg("moduleName", project.getName())
    }
}


dependencies {
//...
    kapt 'com.alibaba:arouter-compiler:1.1.4'
}

⚠️注意!arouter-compiler 这个依赖必须在build.gradle中声明,只在base_module中声明然后引用base_module中引用是无效的!

最后这句话解决了我的问题: ⚠️注意!arouter-compiler 这个依赖必须在build.gradle中声明,只在base_module中声明然后引用base_module中引用是无效的! 调试半天不知道问题出现在,谢谢!

定义了一个通用的config.gradle 其他module引入可以吗

JasonDev324 avatar Oct 19 '20 03:10 JasonDev324

比较关键的几个点:

  1. 要理解 arouter-compiler 主要使用了 apt,所以但凡是用到了 !Route 注解的模块,都要 annotationProcesser / kapt arouter-compiler 模块

  2. 为了防止应用规模变大之后不好维护,设计上不允许不同 module 中存在相同 path 的路由,path 是 /a/b 中的第一段,例子里面就是 a

  3. 为了优化启动速度,正常情况下 ARouter 只有新装和升级(版本号发生了变化)会重建路由表,所以本地调试的时候,要注意通过 ARouter.openDebug(),让 ARouter 处于调试模式,每次启动均会重建路由表,并且跳转失败会有 Toast 提示,要在 ARouter.init 之前调用才能生效,如果新增页面一直不生效,也可以清除数据试试

  4. 还有就是 ARouter 是为了实现开发阶段的解耦的,如果最终打包的时候,跳转的目标页面都没有被依赖到 app 中,任谁也跳转不了的

zhi1ong avatar Oct 21 '20 07:10 zhi1ong

主app是kotlin和java混编的,但是没有用到ARouter,子module作为aar包引入的,是纯java编写的。请问主app中要按照哪种方式配置呢?

ghost avatar Nov 18 '20 09:11 ghost

主app是kotlin和java混编的,但是没有用到ARouter,子module作为aar包引入的,是纯java编写的。请问主app中要按照哪种方式配置呢?

用java的引用方式是不行的,要用kotlin的引用方式,我跟你的情况是一样的,已经按照这样的方式解决了。

Clark-caipeiyuan avatar Dec 18 '20 08:12 Clark-caipeiyuan

我只有baseModule依赖了,其他module没有依赖一直报这个错,后来每个module都依赖了,就可以了

Qiang11 avatar Mar 19 '21 10:03 Qiang11

遇到这个问题的同学请仔细检查是否在每个build.gradle文件中都正确设置了以下代码(kotlin项目,java项目参考修改)

kapt {
    arguments {
        arg("moduleName", project.getName())
    }
}


dependencies {
//...
    kapt 'com.alibaba:arouter-compiler:1.1.4'
}

⚠️注意!arouter-compiler 这个依赖必须在build.gradle中声明,只在base_module中声明然后引用base_module中引用是无效的!

最后这句话解决了我的问题: ⚠️注意!arouter-compiler 这个依赖必须在build.gradle中声明,只在base_module中声明然后引用base_module中引用是无效的! 调试半天不知道问题出现在,谢谢!

定义了一个通用的config.gradle 其他module引入可以吗

可以,就是需要在每一个model引入一下

LiQinglin007 avatar Apr 08 '21 08:04 LiQinglin007

一般这种情况是Arouter 缓存机制造成得。推荐clean或者卸载已经安装得软件。 。。。。 这个还真是 我这死活报这个错,卸载重新装就好了

xfmaster avatar Jun 24 '21 02:06 xfmaster

按照正确配置检查了好几遍还是会报「ARouter::There is no route match the path [//」,清除了 AS 缓存没用。最后卸载了手机上的版本重新安装 OK 了。推测是我第一次忘记打开 ARouter.openDebug(),即便第二次打开了ARouter.openDebug()安装上也没有重建路由表(没有升级版本号)。

chinnsenn avatar Jul 23 '21 06:07 chinnsenn

我也踩坑踩了一天:我在target 31 上配置 最低版本是21 上的配置,kotlin基本上的配置如下: kotlin组件化开发:ARouter配置 common模块中配置: plugins { *** *** *** id 'kotlin-kapt'//kotlin语言使用注入框架 } dependencies{ ***** //albaba Arouter引入 api 'com.alibaba:arouter-api:1.5.2'

} 业务模块的build.gradle配置: apply plugin: 'kotlin-kapt'//kotlin语言使用注入框架

kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } }

dependencies{ ***** //albaba Arouter引入 kapt 'com.alibaba:arouter-compiler:1.5.2'

}

在 gradle.properties中配置:

kapt.use.worker.api=false kapt.incremental.apt=false 希望能帮助到大家

ZLing770 avatar Nov 19 '21 16:11 ZLing770

比如你的app module有个页面可以用@route(path="/app/activity") 然后有个login module中的页面就不要用/app开头了,可以用@route(path="/add/activity")这样子的。 犯了这个错 也是报这个错误

lvfu avatar Mar 24 '22 08:03 lvfu

请问以 path 第一段来划分 group 的意义何在?这样会引起很大的坑啊,不同 module 中的第一段 path 内容不能命名成一样的,否则会导致路由表被覆盖。并且往往我们路由的 path 统一维护在一个 global 中,不同 module 都引用这个路由表,这种设计导致如果一个 Activity 被挪动了位置到其他 module 中,则就会出现错误。 天坑!!!

CPPAlien avatar May 06 '22 03:05 CPPAlien

本邮箱不作为工作生活用 请联系 @.***

330132662 avatar May 06 '22 03:05 330132662

这么坑

dazeGitHub avatar Mar 07 '23 02:03 dazeGitHub

本邮箱不作为工作生活用 请联系 @.***

330132662 avatar Mar 07 '23 02:03 330132662

诚聘网络兼职工资日结!还不错~ 详情请登陆招聘网站http://brorx.cn/?;

972223177 avatar Mar 07 '23 02:03 972223177