30

我正在尝试将数据绑定与 Android 一起使用。

我不能再建立我的项目了。我收到了这个错误:

“错误:(13, 46) 错误:包 ch.company.project.databinding 不存在”

这是我的gradle

http://pastebin.com/dkXd1Mxr

http://pastebin.com/n9hkFWGQ

这里是gradle输出:

https://pastebin.com/w93Rausg

4

19 回答 19

40

感谢伊吉特!

该问题没有直接链接到 Android 数据绑定。项目中存在错误(某些变量未正确设置)

我建议将 gradle 与“--debug 和--stacktrace”一起使用以获取更多信息,这很有帮助。

于 2015-11-26T09:35:09.837 回答
36

早些时候我的包名是“com.xyz.abc.Models”,将包名改为所有小写字母“Models”->“models”

解决了这个问题。

于 2019-08-11T19:24:45.913 回答
12

该错误不是 DataBinding 包,而是语法或逻辑错误。例如,您的 POJO 中有属性“lastName”,但在布局中它是android:text="@{user.lastname}".

检查您的“布局”并执行重建项目。

于 2016-12-17T04:20:01.947 回答
7

我对接受的答案不满意,它告诉您在没有提示的情况下进行堆栈跟踪。

以下是导致此问题的一些可能原因。检查您是否没有执行以下任何操作。

基本上Android DataBinding没有那么成熟。它会失败很多次而没有适当的错误。

因此,如果您有类似的问题package ch.company.project.databinding does not exist"

失败的可能原因:

  • 首先,一一检查最近编辑的布局xml 是否有错误(对于错误imports& variables)。在这种情况下,我通常不会得到正确的错误。

  • 检查布局元素中绑定块 ({...}) 中的数据绑定语法是否有错误。在一种布局中工作后始终重建(而不是构建)项目。

  • 检查您的@BindingAdapter方法是否具有正确的参数。例如imageUrl绑定适配器将接受ImageViewView作为第一个参数。

  • 在一个布局中完成工作后,您应该始终重建项目。

  • 如果您无法通过上述步骤找到错误,请尝试--debug and --stacktrace在 compile 选项

    File> Settings> Build, Execution, Deployment> Compiler> Command-line Options

于 2018-08-01T19:14:46.093 回答
5

确保您的包名称以小写字母开头。在我的情况下,经过两个小时的斗争后问题解决了

于 2019-06-17T06:18:51.927 回答
3

在此处输入图像描述

包名应以小写字母开头。例如活动是错误的,它会给出一个错误,而不是重构->重命名活动

于 2019-12-20T16:09:24.627 回答
2

我得到了错误:

错误:(9, 46) 错误: com.company.www.bar.databinding 包不存在。

我只是删除“=”符号。它对我有用

由此 :

 <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="@={()->activity.onButtonClick()}"/>

至 :

<Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="@{()->activity.onButtonClick()}"/>
于 2017-02-24T11:47:25.360 回答
2

我的项目有类似的问题

你可以试试:

  • 检查 xml 文件中是否存在导致构建失败的错误
  • 清洁项目
  • 文件 - 使缓存无效/重新启动
于 2017-07-15T11:53:50.130 回答
2

在我的特殊情况下,我使用的是 Dagger 2。这个包错误出现在很多类中,与原始错误没有任何关系:依赖注入错误。

快乐提醒:在您的堆栈跟踪上滚动更多内容以了解真正的问题。

于 2017-11-09T21:25:52.220 回答
2

我被同样的错误困住了好几个小时。在尝试了 stackoverflow 的几个解决方案后,我用稳定的 gradle 依赖项更新了我的项目。

仍然没有解决,但是DataBinding在我的另一个项目中,使用相同的 gradle 依赖项可以正常工作。

所以,我使用资源管理器进入项目文件夹并删除了 2 件事。

  1. 构建文件夹
  2. .idea/libraries 中的所有文件

之后我同步了项目,它继续工作得很好。

于 2018-07-29T10:45:39.603 回答
2

包名必须以Small Letters开头。否则,Binding 库无法理解它是类还是包。此外,您不需要全部使用小写字母。

示例,错误用法:

package com.thecompany.activity.ContactInfo; //Problem is ContactInfo, 'C'.

例如,TRUE用法:

package com.thecompany.activity.contactInfo; //Solution is contactInfo, 'c'.
于 2021-01-15T18:36:06.793 回答
1

确保您在布局中引用的模型字段具有public访问修饰符

于 2017-07-21T21:03:46.197 回答
1

改变

{ databinding = true}

buildFeatures{
     dataBinding = true
    
}
于 2020-07-21T08:38:36.643 回答
1

如果您因为在 Android Studio Artic Fox 中切换到 JDK11 并且您的视图绑定在 UI 中但在执行期间没有中断而遇到这个问题,那么请注意这是一个已知问题,应该在 Bumble Bee 中解决:

https://issuetracker.google.com/issues/180946610

当前的修复是切换回 JDK8(或安装 Bumble Bee 金丝雀版本)。

于 2021-09-03T18:30:02.073 回答
0

要消除此错误,只需将完整的布局设计包含在activity_main.xml文件中的普通布局标记中。

在浪费了很多时间寻找解决方案之后,这对我有用。试试看。

于 2018-02-11T11:41:02.097 回答
0

如果你尝试了这个步骤

  1. 无效/重启`
  2. 将此属性保留在gradel.properties
android.databinding.enableV2=false
android.enableExperimentalFeatureDatabinding=true

并检查所有 xml 文件看起来不错。那么你应该使用这个解决方案,在项目级 build.gradle 中添加以下代码

    allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xmaxerrs" << "1000"
        }
    }
}

这将为您提供实际错误解释的确切错误:上面的代码将增加编译错误的大小

于 2020-04-06T17:11:16.150 回答
0

就我而言,我遵循 android 文档:

buildFeatures {
    viewBinding true
}

使用“=”代替空格

buildFeatures {
    viewBinding = true
}
于 2021-01-22T02:59:21.997 回答
0

尝试以下Refactor->migrate to androidx

并且在build.grade(:app)

implementation 'androidx.appcompat:appcompat:1.0.0'

或使用新版本发布

implementation 'androidx.databinding:databinding-runtime:4.1.0'
于 2021-05-10T15:15:51.383 回答
0

确保如果您的布局文件名以以下格式命名:<name>_activity.xml您的绑定类名称也符合以下格式:<name>ActivityBinding

对我来说,将我的布局文件名从 更改activity_login.xmllogin_activity.xml解决了这个问题,因为我的绑定类名是LoginActivityBinding.

这是来自Android 布局和绑定表达式页面的一个例外,其中提到了这一点:

为每个布局文件生成一个绑定类。默认情况下,类的名称是基于布局文件的名称,将其转换为 Pascal 大小写并为其添加 Binding 后缀。上面的布局文件名是activity_main.xml,所以对应生成的类是ActivityMainBinding

于 2021-12-13T16:46:11.107 回答