Java android studio中的包名称与同名类冲突错误

Java android studio中的包名称与同名类冲突错误,java,android,android-studio,package,Java,Android,Android Studio,Package,我在尝试开发android应用程序的Udacity课程 上面是我在学习第4课时尝试创建android测试用例时遇到的错误 问题在于androidtest文件夹下的测试类被打包在 但是每当我在Androidtest配置中运行应用程序时,gradle就会用相同的包名为Androidtest构建bUildCOnfig文件,并给出错误“错误:(4,1)错误:包com.sasharma.android.sunshine.test与同名类冲突” 我还发现,课程讲师使用的软件包名称与我使用的软件包名称之间的唯

我在尝试开发android应用程序的Udacity课程

上面是我在学习第4课时尝试创建android测试用例时遇到的错误

问题在于androidtest文件夹下的测试类被打包在 但是每当我在Androidtest配置中运行应用程序时,gradle就会用相同的包名为Androidtest构建bUildCOnfig文件,并给出错误“错误:(4,1)错误:包com.sasharma.android.sunshine.test与同名类冲突”

我还发现,课程讲师使用的软件包名称与我使用的软件包名称之间的唯一区别在于,他们有一个额外的“应用程序”到那里,src\main\java*活动类的包名(比如我的包名)也是com.sasharma.android.sunshine,但它们的包名是com.sasharma.android.sunshine.test,androidTest目录下的包名也是如此


提前感谢

更新之后,我遇到了相同的错误

  • 我删除了Buildconfig.java
  • 重构-->重命名,错误类别
  • 我又跑了一遍


  • 我试图重建项目并解决问题


    构建->重建项目

    我通过更改
    app\build.gradle
    中的applicationId修复了相同的问题,并重建了项目。
    build.gradle
    中的我的applicationId
    package
    名称与
    AndroidManifest.xml中的
    appname
    连接在一起

    更改前:

    defaultConfig {
        applicationId "com.mypackage.MyApp"
    }
    
    格雷德尔先生

    defaultConfig {
        applicationId "com.mypackage.MyAppName"
    }
    
    AndroidManifest.xml

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.mypackage" >
        <application
            android:name="MyAppName"
        </application>
    </manifest>
    
    我在两个地方犯了这个错误:

  • MyProjectName/app/build/generated/source/BuildConfig/androidTest/debug/mypackage/MyClass/test中的BuildConfig.java
  • MyProjectName/app/build/generated/source/R/androidTest/debug/mypackage/MyClass/test中的R.java

  • 两者都包含
    package com.mypackage.MyClass.test报告的内容出错。

    我认为您的项目文件中有test.java文件。 将其重命名为其他名称

    for android-studio click on test.java and  Go to ReFactor-->Rename
    

    转到生成-->重建项目。

    如果将
    testApplicationId
    定义为与默认值相同的
    yourApplicationId.test
    ,则也会出现此错误

    作为文件:

    默认情况下,构建工具使用给定构建变量的应用程序ID(附加有.test)将应用程序ID应用于检测测试APK。例如,com.example.myapp.free构建变量的测试APK具有应用程序ID com.example.myapp.free.test


    因此,您不应该只将
    .test
    附加到
    应用程序ID
    中,就使用与默认值相同的
    测试应用程序ID
    ,但您可以将其更改为任何其他内容,它将正常工作。

    如果您的类名称为“test”,请将其删除。
    我遇到了这个问题,并重新解决了它。

    如果Glide库导致了这个问题,请确保“MyAppGlideModule”类不是内部类。

    这是一个迟来的答案,但仍然没有一个答案提供显示此错误的真正原因

    当一个包名与一个类相同时,会出现此错误,如下所示:

    main 
        java
            com.yourpackage.mycoolapp
                 somePackage
                     myclass.java
                     class2.java
                 somePackage.java
    
    正如您在上面看到的,包名
    somePackage
    和类名
    somePackage.java
    具有相同的名称


    要解决此问题,您可以更改包名或类的名称:

    右键单击包/类->重构->重命名


    完成,无需重建。

    我在使用事件总线时面临此问题

    实际上,我编写了错误的eventBusIndex,它使用和我的应用程序id相同的包名创建了文件,并且它出错了

    错误代码

    kapt {
        arguments {
            arg('eventBusIndex', 'MY_APPLICATION_ID')//E.g. "com.me.myappname"
        }
    }
    
    固定代码

    kapt {
        arguments {
            arg('eventBusIndex', 'MY_APPLICATION_ID.MyEventBus')//E.g. "com.me.myappname.MyEventBus"
        }
    }
    

    您确定没有名为
    test
    test
    的类吗?另外,为什么不响应Java命名约定;类以大写字母开头,包都是小写的。android的拼写是
    android
    ,而不是
    android
    。感谢@PeterLawrey指出错误。我在其中一个软件包中进行了类名测试。很难找到全班同学的答案,因为我是android studio的新手。在eclipse中,简单的CTRL+SHIFT+r可以帮助我获取类,但我不知道android studio中的相应快捷方式(这篇文章似乎没有提供问题的答案。请编辑您的答案,或者将其作为问题的注释发布)。
    kapt {
        arguments {
            arg('eventBusIndex', 'MY_APPLICATION_ID.MyEventBus')//E.g. "com.me.myappname.MyEventBus"
        }
    }