java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy

在flutter混合开发中,有时候会遇到

java.io.FileNotFoundException: /Users/nesger/Desktop/nesger_folder/project/studio/my_flutter/.android/include_flutter.groovy

这样的问题,提示文件找不到。

记住:一定要先执行一次   flutter pub get

无论是新建项目,还是老项目允许出现这个问题,先想办法让编译器找到这个文件。

我们看下配置信息:

include ':app'
setBinding(new Binding([gradle: this]))          
evaluate(new File(                                         
        settingsDir.parentFile,                                  
        'my_flutter/.android/include_flutter.groovy'    
))   

new File(settingsDir.parentFile,'my_flutter/.android/include_flutter.groovy' ) 解读下这句话的意思就是指定 include_flutter.groovy 的所在位置。这里的意思是在 settings 文件所在目录(settingsDir)的父目录有个文件(settingsDir.parentFilemy_flutter/.android/include_flutter.groovy。看下下面的文件放置位置图就清楚了:

所以官网在跟项目同级创建 flutter module 是没问题的。但是我们现在改了,应该怎样设置呢?

上下图,然后大家考虑一下答案,再往下翻,相信聪明的你一定知道,改法有多种,下面提供一下几种方案。

Tips:注意相对路径的使用,重点是找到 include_flutter.groovy

解法一:(推荐)

include ':app'
setBinding(new Binding([gradle: this]))         
evaluate(new File(                                        
        settingsDir,                                  
        'sub/my_flutter/.android/include_flutter.groovy'    
))                                                                     

在 settings 所在目录有 sub/my_flutter/.android/include_flutter.groovy 文件

解法二:

include ':app'
setBinding(new Binding([gradle: this]))        
evaluate(new File(                                          
        settingsDir.parentFile,                                   
        'MyApp/sub/my_flutter/.android/include_flutter.groovy'   
))                                                                     

在 settings 所在目录的父目录有 MyApp/sub/my_flutter/.android/include_flutter.groovy 文件

有了上面图文并茂的讲解加上一个实际的 Sample,相信不管 flutter module 放在哪里你到可以关联到了。


最后再说个老项目遇到这种问题的解决办法。

下图是项目各模块的位置(flutter_module目录就是flutter相关代码):

从上图可以看到,settings.gradle与flutter_module处在根目录同一级下。

settings.gradle配置如下:

include ':***'
include ':biz-ss'
include ':***'
include ':runtime'

include ':app'
def localPropertiesFile = new File("gradle.properties")
def properties = new Properties()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
// 非发布模式,添加本地依赖
if (!properties.getProperty('IS_PUBLISHED').toBoolean()) {
    setBinding(new Binding([gradle: this]))
    evaluate(new File(
            './flutter_module/.android/include_flutter.groovy'
    ))
}

include ':flutter_module'

这个配置是没有问题且可以正常运行,当换了个电脑重新运行,有时候会出现下面的错误:

org.gradle.api.GradleScriptException: A problem occurred evaluating settings '**-android_2.5.3'.
Caused by: java.io.FileNotFoundException: /Users/lzx/.gradle/daemon/6.1.1/flutter_module/.android/include_flutter.groovy (/Users/lzx/.gradle/daemon/6.1.1/flutter_module/.android/include_flutter.groovy)
    at settings_2829oyj549dc28e9vwzq8kywa.run(/Users/lzx/Documents/git/**t-android_2.5.3/settings.gradle:13)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
    ... 125 more 

从报错可以看出,编译器没有找到正确的include_flutter.groovy所在的路径。

在网上找了一番后,总算找到了解决办法,修改配置如下:

if (!properties.getProperty('IS_PUBLISHED').toBoolean()) {
    setBinding(new Binding([gradle: this]))
    evaluate(new File(settingsDir,
            'flutter_module/.android/include_flutter.groovy'
    ))
}

 再次build就能正常运行了。

PS:当项目能正常运行一段时间后,可以将settingsDir配置删除掉再试下,项目也能正常运行了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.io.FileNotFoundException: http://localhost:8080/ 是一个文件找不到的异常。 这个异常通常是由于程序无法在指定的URL中找到文件导致的。例如,在引用提供的代码中,尝试打开一个URL连接来读取该URL指向的文件时,如果该文件不存在,就会抛出这个异常。 要解决这个问题,可以考虑以下几个步骤: 1. 确保URL的正确性: 首先,验证URL是否正确。可以尝试在浏览器中手动访问该URL,看看是否能够成功打开文件。如果无法在浏览器中打开文件,那么很有可能URL指向的文件确实不存在。 2. 检查文件路径: 如果URL是正确的,那么可以检查一下文件路径是否正确。确保文件所在的路径是可以被访问到的,并且文件确实存在于该路径中。 3. 检查文件权限: 如果文件路径是正确的,并且文件确实存在于该路径中,那么可能是由于文件权限的问题导致无法访问该文件。确保程序运行的用户具有足够的权限来访问该文件。 4. 处理异常: 如果以上步骤都确认无误,但仍然无法解决问题,那么可以在程序中使用try-catch语句来捕获FileNotFoundException异常,并进行相应的处理,例如输出错误信息或采取其他措施来处理异常情况。 总结起来,当出现java.io.FileNotFoundException: http://localhost:8080/ 异常时,需要检查URL的正确性、文件路径和文件权限,并处理异常情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [解决java java.io.FileNotFoundException: http:\localhost:8080 (文件名、目录名或卷)问题](https://blog.csdn.net/zelda002/article/details/7601653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [jdbc连接数据库getConnection 增、删、改、查](https://download.csdn.net/download/l_ji_l/3671447)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值