【问题标题】:Didn't find class on DexPathList在 DexPathList 上找不到课程
【发布时间】:2014-09-29 23:35:18
【问题描述】:

您好,我的应用程序有问题。我正在使用 Android Studio 0.8.4

我得到这个错误:

java.lang.RuntimeException:无法实例化应用程序 com.twittstr.TwittstrApplication:java.lang.ClassNotFoundException: 在路径上找不到类“com.twittstr.TwittstrApplication”: DexPathList[[压缩文件 "/data/app/com.twittstr-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.twittstr-1, /系统/库]] 在 android.app.LoadedApk.makeApplication(LoadedApk.java:516) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317) 在 android.app.ActivityThread.access$1500(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5017) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在 dalvik.system.NativeStart.main(本机方法) 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.twittstr.TwittstrApplication”:DexPathList [[zip 文件 "/data/app/com.twittstr-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.twittstr-1, /系统/库]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:497) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:457) 在 android.app.Instrumentation.newApplication(Instrumentation.java:975) 在 android.app.LoadedApk.makeApplication(LoadedApk.java:511) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317) 在 android.app.ActivityThread.access$1500(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5017) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在 dalvik.system.NativeStart.main(Native Method)

我知道 stackoverflow 上已经有类似的问题了。但是,建议的答案是在 eclipse 中进行清理,或者有人在清单中使用了错误的包名称。我无法为我的应用找到这些问题之一。

我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.twittstr">


  <uses-sdk
      android:minSdkVersion="14"
      android:targetSdkVersion="20" />


  <uses-permission android:name="android.permission.INTERNET"/>

  <application android:allowBackup="true"
      android:label="@string/app_name"
      android:icon="@drawable/ic_launcher"
      android:theme="@style/Theme.Twittstr"
      android:name="com.twittstr.TwittstrApplication"
      >

    <activity android:name="com.twittstr.login.LoginActivity"
        android:theme="@style/Theme.Twittstr.Login"
        >

      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>

    </activity>

  </application>

</manifest>

我已经包含了来自其他位置的其他项目(不在 gradle 项目路径中。 我的 settings.gradle:

包括 ':app'

project(':dagger').projectDir = new File('~/android/dagger')

我的 build.gradle 文件:

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'

apply plugin: 'crashlytics'

android {
  compileSdkVersion 20
  buildToolsVersion "20.0.0"

  defaultConfig {
    applicationId "com.twittstr"
    minSdkVersion 14
    targetSdkVersion 20
    versionCode 1
    versionName "1.0"
  }
  buildTypes {
    release {
      runProguard false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'LICENSE'
    exclude 'NOTICE'
  }
}

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
 // wearApp project(':wear')
  compile 'com.google.android.gms:play-services-wearable:+'

  // Annotation Processing
  compile 'com.squareup.dagger:dagger:1.2.2'
  apt 'com.squareup.dagger:dagger-compiler:1.2.2'


  compile project (':dagger')


  // ActionItem
  compile 'com.tundem.actionitembadge:library:1.1.0@aar'
  compile 'com.balysv:material-menu:1.0.0'


  // compile 'com.github.japgolly.android:svg-android:2.0.6'


  // Twitter
  compile 'org.twitter4j:twitter4j-core:4.0.2'
}

依赖关系可以正确地重新加载。

可能是 Android Studio 的问题。更有可能是我在清单中有一个非常愚蠢的错误,但我看不到它。有什么建议吗?

【问题讨论】:

  • 显而易见的问题:你有 com.twittstr.TwittstrApplication 类吗?它是否扩展了 Application
  • 是的,是的 :) 如果我从 xml 应用程序标记中删除 android:name 属性,那么我将在 LoginActivity ... Didn't find class "com.twittstr.login.LoginActivity" on path 中得到相同的错误。这些类位于正确的包层次结构中。 Android Studio 自动补全清单文件中的包
  • 您也可以发布您的 build.gradle 吗?
  • 我已经添加了 build.gradle 文件
  • 伙计,这令人费解......您可以尝试以下操作:关闭 Android Studio,删除 .idea 文件夹(包含 IDE 文件),然后重新导入(而不是重新打开)您的项目。编辑:看看你的类是否被排除在 .idea/compiler.xml

标签: java android android-studio


【解决方案1】:

首先: 在您的班级TwittstrApplication 中添加:@EApplication

然后在您的清单中,更改:

android:name="com.twittstr.TwittstrApplication"

android:name="com.twittstr.TwittstrApplication_"

清理和构建。它对我有用。

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 2017-09-12
    • 2014-05-29
    • 2015-07-01
    • 2018-12-30
    • 2015-01-02
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多