未find新的遗物类…我甚至不使用新的遗物

我什至不使用新的遗物,我得到他们的错误。 它突然发生了。

我正在使用最新的Android Studio版本(0.61)。 即使我的主分支也有同样的错误。 我的机器上有其他项目使用新的遗物,但不是这个。 这个项目不会以任何方式使用新的遗物,而不是任何一个任性的gradle依赖。

我已经尝试清除我的gradlecaching,并重新下载所有的第三方库,没有工作。

堆栈跟踪:

06-15 01:05:54.872 20117-20117/com.waxwings.happyhour.staging D/HappyHourApplication﹕ CREATE TABLE job_holder (_id integer primary key autoincrement , `priority` integer, `group_id` text, `run_count` integer, `base_job` byte, `created_ns` long, `delay_until_ns` long, `running_session_id` long, `requires_network` integer ); 06-15 01:05:54.874 20117-20117/com.waxwings.happyhour.staging D/AndroidRuntime﹕ Shutting down VM 06-15 01:05:54.877 20117-20117/com.waxwings.happyhour.staging E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.waxwings.happyhour.staging, PID: 20117 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/newrelic/agent/android/instrumentation/SQLiteInstrumentation; at com.path.android.jobqueue.persistentQueue.sqlite.DbOpenHelper.onCreate(DbOpenHelper.java:42) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) at com.path.android.jobqueue.persistentQueue.sqlite.SqliteJobQueue.<init>(SqliteJobQueue.java:42) at com.path.android.jobqueue.JobManager$DefaultQueueFactory.createPersistentQueue(JobManager.java:594) at com.path.android.jobqueue.JobManager.<init>(JobManager.java:77) at com.waxwings.happyhour.HappyHourApplication.configureJobManager(HappyHourApplication.java:84) at com.waxwings.happyhour.HappyHourApplication.onCreate(HappyHourApplication.java:38) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1030) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4425) at android.app.ActivityThread.access$1500(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5102) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.newrelic.agent.android.instrumentation.SQLiteInstrumentation" on path: DexPathList[[zip file "/data/app/com.waxwings.happyhour.staging-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.waxwings.happyhour.staging-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469)             at com.path.android.jobqueue.persistentQueue.sqlite.DbOpenHelper.onCreate(DbOpenHelper.java:42)             at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)             at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)             at com.path.android.jobqueue.persistentQueue.sqlite.SqliteJobQueue.<init>(SqliteJobQueue.java:42)             at com.path.android.jobqueue.JobManager$DefaultQueueFactory.createPersistentQueue(JobManager.java:594)             at com.path.android.jobqueue.JobManager.<init>(JobManager.java:77)             at com.waxwings.happyhour.HappyHourApplication.configureJobManager(HappyHourApplication.java:84)             at com.waxwings.happyhour.HappyHourApplication.onCreate(HappyHourApplication.java:38)             at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1030)             at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4425)             at android.app.ActivityThread.access$1500(ActivityThread.java:139)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:136)             at android.app.ActivityThread.main(ActivityThread.java:5102)             at java.lang.reflect.Method.invoke(Native Method)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) Suppressed: java.lang.ClassNotFoundException: com.newrelic.agent.android.instrumentation.SQLiteInstrumentation at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 19 more Caused by: java.lang.NoClassDefFoundError: Class "Lcom/newrelic/agent/android/instrumentation/SQLiteInstrumentation;" not found ... 23 more 

build.gradle模块:

 apply plugin: 'android' apply plugin: 'newrelic' android { compileSdkVersion 19 buildToolsVersion "19.1.0" defaultConfig { minSdkVersion 19 targetSdkVersion 19 versionCode 1 versionName "1.0" testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" } buildTypes { release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } useOldManifestMerger true productFlavors { staging { applicationId "com.waxwings.happyhour.staging" } production { applicationId "com.waxwings.happyhour" } } packagingOptions { exclude 'LICENSE.txt' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } } dependencies { compile 'com.path:android-priority-jobqueue:1.1.2' compile "com.android.support:support-v4:19.1.0" compile 'com.google.android.gms:play-services:4.4.52' // compile fileTree(dir: 'libs', include: ['*.jar']) compile files('libs/wearable-preview-support.jar') compile group: 'com.squareup.okhttp', name: 'okhttp', version: '1.5.3' compile group: 'com.squareup.picasso', name: 'picasso', version: '2.2.0' compile 'com.jakewharton:butterknife:5.0.1' compile 'com.squareup.retrofit:retrofit:1.5.1' compile 'com.squareup:otto:+' compile 'com.squareup.phrase:phrase:+' compile 'com.newrelic.agent.android:android-agent:3.402.0' // Mockito dependencies androidTestCompile "org.mockito:mockito-core:1.9.5" androidTestCompile files( 'libs/dexmaker-1.0.jar', 'libs/dexmaker-mockito-1.0.jar') androidTestCompile ('com.squareup:fest-android:1.0.8'){ exclude group:'com.android.support', module: 'support-v4' } androidTestCompile 'com.squareup.spoon:spoon-client:1.1.1' androidTestCompile('junit:junit:4.11') { exclude module: 'hamcrest-core' } androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') { exclude group: 'org.hamcrest:hamcrest-core:1.1' exclude group: 'org.hamcrest:hamcrest-library:1.1' exclude group: 'org.hamcrest', module: 'hamcrest-integration' exclude group:'com.android.support', module: 'support-v4' } androidTestCompile ('com.jakewharton.espresso:espresso-support-v4:1.1-r3'){ exclude group:'com.android.support', module: 'support-v4' } } 

build.gradle for project:

 buildscript { repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/comnewrelic-1153' } maven { url 'https://oss.sonatype.org/content/repositories/comnewrelic-1154' } } dependencies { classpath 'com.android.tools.build:gradle:0.11.+' classpath 'com.newrelic.agent.android:agent-gradle-plugin:3.402.0' } } allprojects { repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/comnewrelic-1153' } } } 

编辑

该项目现在在每个用户build议的build.gradle中导入New Relic。 这解决了这个问题,但我仍然在探索为什么,因为它似乎不应该是必要的。 抛出错误的类在Path的JobQueue库中,库在4个月内没有更新,而我的应用程序运行良好,这只是突然开始发生。 在第三方lib中出错的类甚至不使用New Relic。

编辑2

优先级作业队列库不使用新的文物。 我不知道为什么堆栈跟踪说,它看起来像一个红色的鲱鱼。 我听说New Relic SDK修改了Android API并给出奇怪的错误。 但是,我的项目中并没有使用新的文物。 是否有可能在另一个项目中使用NR sdk感染了这个(可能是Android Studio中的一个bug)?

编辑3

OK,原始堆栈跟踪中的Priority Job Queue lib绝对是一个错误的标志。 在JobQueue有机会访问它之前,我继续访问我自己的提供程序(知道这将迫使在JobQueue库之前创build自己的数据库)。 我的逻辑是,如果Android Sqlite被New Relic感染,那么它会在我自己的OpenHelper上导致一个类似的错误。

 06-15 15:29:39.848 1368-1368/com.waxwings.happyhour.staging W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4d81b20) 06-15 15:29:39.848 1368-1368/com.waxwings.happyhour.staging E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.waxwings.happyhour.staging, PID: 1368 java.lang.NoClassDefFoundError: com.newrelic.agent.android.instrumentation.SQLiteInstrumentation at com.waxwings.happyhour.services.HHOpenHelper.onCreate(HHOpenHelper.java:56) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188) at com.waxwings.happyhour.services.HappyHourProvider.query(HappyHourProvider.java:121) at android.content.ContentProvider.query(ContentProvider.java:857) at android.content.ContentProvider$Transport.query(ContentProvider.java:200) at android.content.ContentResolver.query(ContentResolver.java:461) at android.content.ContentResolver.query(ContentResolver.java:404) at com.waxwings.happyhour.HappyHourApplication.onCreate(HappyHourApplication.java:39) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4344) at android.app.ActivityThread.access$1500(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) 

编辑4

我只是在一台从未在任何项目中安装New Relic库的机器上运行该项目,运行良好。 我认为这是非常有力的证据,certificateNew Relic正在做一些有趣的插件/图书馆。

编辑5

我更新了我的gradle-wraper.properties文件,使用rc-1发行版,似乎已经解决了这个问题。 我从一个评论者build议的build.gradle中删除了新的遗留依赖项,并且该应用程序仍然运行正常。

 distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-rc-1-all.zip 

我的猜测是New Relic库被caching在1.12所有gradle发行版中,这是导致其他项目出错的常见链接。 我还不确定是什么让New Relic库变得不同,Gradle认为它应该包含在其他项目中。 鉴于New Relic在Eclipse插件不久之前就有了一个几乎相同的问题,我认为有理由认为他们的Maven发行版正在进行中。 我有一个支持票据打开,我会继续调查和报告。

奇怪的是,如果我删除〜/ .gradle目录中的所有gradle distributions / caches / etc,并尝试使用1.12-all发行版,它仍会抛出新的遗迹错误。 它将工作的唯一方法是如果我使用1.12-rc-1-all gradle发行版。

Solutions Collecting From Web of "未find新的遗物类…我甚至不使用新的遗物"

它看起来像Android Studio切换到gradle守护进程,以加快构build。 不幸的是,这caching了New Relic代理的一部分,当你切换到没有代理的项目(或者不同的版本)时,有必要停止守护进程,你可以简单地通过运行:

 gradle --stop 

你也想要清理你的项目,以确保类重build和dexed。

虽然这应该让你现在运行起来,我们将马上解决这个问题,你可以期待它在下一个版本的代理。

 ./gradlew --stop ./gradlew cleanBuildCache ./gradlew clean 

为我工作

我尝试了gradle --stop但没有奏效。

删除.gradle目录并再次同步项目,它的工作。

我面对kitkat中的NoClassDefFoundError奇怪的问题。 但它棒棒糖的工作正常。

我尝试了所有上述修复,但没有工作。

最后我才知道它是因为multidex错误。 我跨越了65k的方法。 所以,我从android开发人员站点跟随了这个教程 。 并像魅力一样工作