Android 程序包 ***.databinding不存在 解决方案

1、程序包 ***.databinding不存在 解决方案:

(1)首先查看 是否 布局文件 有语法错误。如果有错误  先解决 布局文件的一般性语法错误。

(2)根据 databinding 使用的 几处修改 检查是否有问题

  1、build.grade中是否添加:

Android 4.1 前
android {
    ...
    
    dataBinding{
        enabled true
    }
    
    ...
}
Android 4.1 之后
android {
    ...
    
    buildFeatures {
        dataBinding = true
        //viewBinding = true
    }
    
    ...
}

  Android Studio 或者 gradle 版本切换 可能导致各种坑爹的问题  

2、布局文件中是否 layout 作为根节点

  例如  使用databinding 前 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:text="dataBinding基本使用"/>
</LinearLayout>

   使用databinding 后

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center"
            android:text="dataBinding基本使用"/>
    </LinearLayout>
</layout>

基本可以解决问题!

参考:

https://blog.csdn.net/qiang_xi/article/details/73849556

https://blog.csdn.net/guyuealian/article/details/51953749

 

2、Unable to load class 'javax.xml.bind.JAXBException'.

This is an unexpected error. Please file a bug containing the idea.log file.

一开始 我认为:

这个问题 基本就是   gradle 的 JDK 和 本地环境中 JavaHome 中的 JDK 版本不一致导致的。

Android Studio => Project Structure => SDK Location => Gradle Settings =>Gradle JDK 路径 与 JavaHome 的 本地JDK 版本统一就好了。

因为 在我的机器上  我将 jdk 统一成 1.8 确实解决了问题 后面发现 统一成 jdk11 依然有问题

 

更新:

实际上并不是以上原因

JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包 。而在 java 6/7 / 8 时关于这个API 都是捆绑在一起的。

 所以解决方案就是 将 JDK 降级 或 手动导入JAXB API 依赖包 

方案一:
降低JDK 9 版本到 JDK 6/7/8。
方案二:(亲测可行)
手动导入下面四个Jar包: javax.activation-1.2.0.jar    jaxb-api-2.3.0.jar  jaxb-core-2.3.0.jar  jaxb-impl-2.3.0.jar

javax.activation-1.2.0.jar
http://search.maven.org/remotecontent?filepath=com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.jar

jaxb-api-2.3.0.jar
http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar

jaxb-core-2.3.0.jar
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar

jaxb-impl-2.3.0.jar
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar

下载上面这些文件并复制到libs文件夹下, 添加到Build Path中,重新运行即可。
————————————————
版权声明:本文为CSDN博主「pipizhen_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pipizhen_/article/details/108300039

 

posted @ 2022-06-15 20:33  lesten  阅读(2460)  评论(0)    收藏  举报