Android-job: [1.2.0-RC1] Didn't find class "android.app.job.JobServiceEngine"

Created on 2 Sep 2017  路  21Comments  路  Source: evernote/android-job

Hey,

looks like version 1.2.0-RC1 doesn't work on pre-Oreo devices.
While adding JobCreator in the Application class JobManager.create(this).addJobCreator(new SampleJobCreator()); the following error about missing android.app.job.JobServiceEngine class occurs:

09-02 20:27:52.601 9871-9871/com.sampleapp I/art: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.app.JobIntentService$JobServiceEngineImpl>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/app/job/JobServiceEngine;
09-02 20:27:52.601 9871-9871/com.sampleapp I/art:     at void com.evernote.android.job.JobRescheduleService.startService(android.content.Context) (JobRescheduleService.java:29)
09-02 20:27:52.601 9871-9871/com.sampleapp I/art:     at void com.evernote.android.job.JobManager.<init>(android.content.Context) (JobManager.java:159)
09-02 20:27:52.601 9871-9871/com.sampleapp I/art:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:112)
09-02 20:27:52.601 9871-9871/com.sampleapp I/art:     at void com.sampleapp.SampleApplication.setUpJobCreator() (SampleApplication.java:119)
09-02 20:27:52.601 9871-9871/com.sampleapp I/art:     at void com.sampleapp.SampleApplication.onCreate() (SampleApplication.java:73)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1024)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5405)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1546)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.os.Looper.loop() (Looper.java:154)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6121)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:889)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:779)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.app.job.JobServiceEngine" on path: DexPathList[[zip file "/data/app/com.sampleapp-2/base.apk", zip file "/data/app/com.sampleapp-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.sampleapp-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.sampleapp-2/lib/arm64, /system/lib64, /vendor/lib64]]
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.evernote.android.job.JobRescheduleService.startService(android.content.Context) (JobRescheduleService.java:29)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.evernote.android.job.JobManager.<init>(android.content.Context) (JobManager.java:159)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:112)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.sampleapp.SampleApplication.setUpJobCreator() (SampleApplication.java:119)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.sampleapp.SampleApplication.onCreate() (SampleApplication.java:73)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1024)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5405)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1546)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.os.Looper.loop() (Looper.java:154)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6121)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:889)
09-02 20:27:52.602 9871-9871/com.sampleapp I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:779)

Launching on Oreo looks fine.
Am I missing something in configuration for pre-Oreo devices?

needs info

Most helpful comment

I am seeing this on Moto X Play with Android 7.1.1

I/art: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.app.JobIntentService$JobServiceEngineImpl>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/app/job/JobServiceEngine; I/art: at void com.evernote.android.job.JobRescheduleService.startService(android.content.Context) (JobRescheduleService.java:32) I/art: at void com.evernote.android.job.JobManager.<init>(android.content.Context) (JobManager.java:159) I/art: at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:112) I/art: at void com.appbootup.ipo.news.data.Application.onCreate() (Application.java:133) I/art: at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1046) I/art: at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5444) I/art: at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1) I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1558) I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) I/art: at void android.os.Looper.loop() (Looper.java:154) I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6165) I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2) I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:888) I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:778) I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.app.job.JobServiceEngine" on path: DexPathList[[zip file "/data/app/com.appbootup.ipo.news.debug-2/base.apk", zip file "/data/app/com.appbootup.ipo.news.debug-2/split_lib_directories_apk.apk"],nativeLibraryDirectories=[/data/app/com.appbootup.ipo.news.debug-2/lib/arm, /data/app/com.appbootup.ipo.news.debug-2/base.apk!/lib/armeabi-v7a, /data/app/com.appbootup.ipo.news.debug-2/split_lib_directories_apk.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]] I/art: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56) I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380) I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) I/art: at void com.evernote.android.job.JobRescheduleService.startService(android.content.Context) (JobRescheduleService.java:32) I/art: at void com.evernote.android.job.JobManager.<init>(android.content.Context) (JobManager.java:159) I/art: at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:112) I/art: at void com.appbootup.ipo.news.data.Application.onCreate() (Application.java:133) I/art: at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1046) I/art: at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5444) I/art: at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1) I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1558) I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) I/art: at void android.os.Looper.loop() (Looper.java:154) I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6165) I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2) I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:888) I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:778)

All 21 comments

OK, looks like jobs are scheduled correctly and they work also on pre-Oreo devices (my mistake, sorry!).
The error above is still visible in logs. It would be great to get rid of it.

I just checked the logs with an API 21 emulator and don't see the exception. Which device are you using? I know that Samsung sometimes logs unnecessary errors. Also, this class is coming from the support library, so even if I would like to change it, I cannot do it.

Closing because of inactivity.

I am seeing this on Moto X Play with Android 7.1.1

I/art: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.app.JobIntentService$JobServiceEngineImpl>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/app/job/JobServiceEngine; I/art: at void com.evernote.android.job.JobRescheduleService.startService(android.content.Context) (JobRescheduleService.java:32) I/art: at void com.evernote.android.job.JobManager.<init>(android.content.Context) (JobManager.java:159) I/art: at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:112) I/art: at void com.appbootup.ipo.news.data.Application.onCreate() (Application.java:133) I/art: at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1046) I/art: at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5444) I/art: at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1) I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1558) I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) I/art: at void android.os.Looper.loop() (Looper.java:154) I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6165) I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2) I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:888) I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:778) I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.app.job.JobServiceEngine" on path: DexPathList[[zip file "/data/app/com.appbootup.ipo.news.debug-2/base.apk", zip file "/data/app/com.appbootup.ipo.news.debug-2/split_lib_directories_apk.apk"],nativeLibraryDirectories=[/data/app/com.appbootup.ipo.news.debug-2/lib/arm, /data/app/com.appbootup.ipo.news.debug-2/base.apk!/lib/armeabi-v7a, /data/app/com.appbootup.ipo.news.debug-2/split_lib_directories_apk.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]] I/art: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56) I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380) I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) I/art: at void com.evernote.android.job.JobRescheduleService.startService(android.content.Context) (JobRescheduleService.java:32) I/art: at void com.evernote.android.job.JobManager.<init>(android.content.Context) (JobManager.java:159) I/art: at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:112) I/art: at void com.appbootup.ipo.news.data.Application.onCreate() (Application.java:133) I/art: at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1046) I/art: at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5444) I/art: at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1) I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1558) I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) I/art: at void android.os.Looper.loop() (Looper.java:154) I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6165) I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2) I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:888) I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:778)

Same here. I am also seeing such errors.

I'm seeing it on samsung galaxy S8
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.app.job.JobServiceEngine" on path: DexPathList[[zip file

Same error on Nexus 5 with Lineage OS 7.1.1. This custom ROM is based on AOSP ROM.
logcat

Same here, OnePlus 5, official Android 7.1.1.

Seeing this on an LG V410 with 7.1.1

Happens intermittently, so unfortunately I don't have additional information to add

Same error on Nexus 5 with Lineage OS 7.1.1. This custom ROM is based on AOSP ROM.
+1
v. 1.2.4

Also seeing this on Nexus 6 Android 7.1.1 logcat.

On further investigation, it looks like "android.app.job.JobServiceEngine" is only available on Oreo.

Same here on Nexus 5 Android 7.0
JobScheduler still works properly though
V 1.2.4
Edit: Only happens in debug build.

Same here on Moto G4 Plus - Android 7.0

Same on Xiomi mi4c Android 8

Same on Samsung Galaxy A5 2016 (SM-A510M)

+1 Moto G 2014 (Android 7.1.2)

Anyone here giving solution or everyone going to say same here...Same Here in Nextbit Robin

same on galaxy s6 (SM-G930F) Android 7.0

same on Huawei P10 (WAS-LX1) , Android 7.0

I just changed my build.gradle minifyEnabled to false:

...
minifyEnabled false
useProguard true
...

After that, this issue is not showing up.

I did not figure out what the hell was going on.

It sounds like it could be a V4 support library issue with trying to call a new API (API 27) on older devices (ie. Android 7.x).
I have filed ticket with Google's Issue Tracking system.

Please follow this link and star the issue, hopefully that will give it enough attention for Google to expedite a fix.

Was this page helpful?
0 / 5 - 0 ratings