当前位置: 首页 > 知识库问答 >
问题:

找不到新的遗迹类…我甚至不使用新的遗迹

何博涛
2023-03-14

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

我使用的是最新的Android Studio版本(0.61)。甚至我的主分支也有同样的错误。在我的机器上有其他的项目使用新的遗迹,但没有这一个。这个项目不使用新的遗迹在任何方式,更多的是一个任性的梯度依赖。

我试着清理我的gradle缓存,重新下载所有的第三方库,没有工作。

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
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'
    }

}
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.Gradle中导入新的遗迹。这修复了问题,但我仍在探索为什么,因为它似乎不应该是必要的。抛出错误的类在Path的JobQueue库中,库已经4个月没有更新了,而我的应用程序一直运行良好,这只是突然发生的。在第三方库中出错的类甚至没有使用新的遗迹。

编辑2

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正在用他们的插件/库做一些有趣的事情。

编辑5

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

共有1个答案

秦才
2023-03-14

看起来Android Studio切换到gradle守护进程是为了更快的构建。不幸的是,这缓存了新的Relic代理的部分,当您切换到一个没有代理的项目(或其他版本)时,需要停止守护进程。您只需运行以下操作即可完成此操作:

gradle --stop

您还希望清理您的项目,以确保重新构建和dexed类。

虽然这应该可以让您现在就开始运行,但我们将立即对此问题进行修复,您可以在代理的下一个版本中看到它。

 类似资料:
  • 我甚至不使用新的遗迹,我得到了他们的错误。事情就这么突然发生了。 我使用的是最新的Android Studio构建(0.61)。就连我的主分支也有同样的错误。我的机器上有其他项目使用新的遗迹,但不是这个。这个项目没有使用新的遗迹在任何方式,与其说是一个任性的梯度依赖。 项目的build.gradle: 编辑 该项目现在在建筑中导入新的遗迹。根据用户的建议。这解决了这个问题,但我仍在探索为什么,因为

  • 最近,我们将tomcat/Spring应用程序转换为Spring boot。除了新遗迹之外,一切都很好。有没有一种方法可以让我很容易地使用Spring Boot项目配置新遗迹。我不想硬编码新遗迹代理jar路径的位置,然后使用该路径运行Spring Boot项目。 编辑:Spring boot项目使用maven

  • 我在Maven集成测试中使用New relic,有时在VM-javaagent上使用confirugraiton运行集成测试和代理时使用/path/to/newrelic。jar正在运行,我收到此异常 有人知道这个问题吗? 当做

  • 我们使用New Relic从生产环境中收集性能信息,并添加了一些自定义工具。在Web事务屏幕中,我们可以看到哪些事务使用的时间最多,甚至可以深入查看最慢事务的特定跟踪。一切正常。然而,最慢的事务并不总是代表整个操作。它们通常是边缘情况(缓存过期、更新后暖化请求等)。 我很想以更聚合的方式看到我们可以在跟踪详细信息中看到的相同数据。最好也是在跟踪详细信息中使用的分层方式(尽管这并不总是可能的,因为多

  • 我只是按照 https://devcenter.heroku.com/articles/newrelic#java-configuration 从步骤 将New Relic代理添加为Maven依赖项 直到步骤 将New Relic代理添加为Scala SBT/Play 2依赖项 要为我的Web服务(Jetty JAX-RS REST)安装New Relic插件。 我定制了这件新文物。yml(与po

  • 我正在将new relic agent用于Spring应用程序的一些测试环境,但我想知道是否可以将new relic agent配置为在我执行Jenkins集成测试的机器中使用。问题是,由于应用程序已启动,使用一些maven tomcat插件运行集成测试,我无法在应用程序服务中正确安装new relic代理,因为在开始测试之前,该代理不存在。 以前有人做过这样的事。 解决方案: https://d