2

I'm having this error on a con.getResponseCode() call.

The crash occurs in a service that is performing a HEAD request. I haven't run the code in quite a while, and it worked before. Since then I've updated my test device from 5.1 to 6.0.1

// Open HEAD http connection
HttpURLConnection testcon = (HttpURLConnection)url.openConnection();
testcon.setRequestMethod("HEAD");
testcon.connect();

// Check for existence
int code = testcon.getResponseCode();  // <-----

The crash does not occur on a Nexus 5 emulator running Android 7.

I've tried:

  • Cleaning and rebuilding
  • Disabling Instant Run
  • Searching for threads, the only three that exist do not look relevant

Full Error Message

02-04 22:26:29.881 19844-22887/com.rubenwardy.minetestmodmanager W/System.err: java.lang.ClassNotFoundException: android.net.ZeroBalanceHelper
02-04 22:26:29.881 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.classForName(Native Method)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.forName(Class.java:324)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.forName(Class.java:285)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.http.ZeroBalanceHelperClass.getFeatureFlagValue(ZeroBalanceHelperClass.java:39)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.http.HttpEngine.followUpRequest(HttpEngine.java:1090)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:393)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.rubenwardy.minetestmodmanager.manager.ModInstallService.handleActionUrlInstall(ModInstallService.java:262)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.rubenwardy.minetestmodmanager.manager.ModInstallService.onHandleIntent(ModInstallService.java:151)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
02-04 22:26:29.882 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.os.Looper.loop(Looper.java:148)
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err: Caused by: java.lang.ClassNotFoundException: android.net.ZeroBalanceHelper
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.classForName(Native Method)
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:  ... 15 more
02-04 22:26:29.883 19844-22887/com.rubenwardy.minetestmodmanager W/System.err: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
02-04 22:26:30.710 19844-22887/com.rubenwardy.minetestmodmanager W/System.err: java.lang.ClassNotFoundException: android.net.ZeroBalanceHelper
02-04 22:26:30.710 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.classForName(Native Method)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.forName(Class.java:324)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.forName(Class.java:285)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.http.ZeroBalanceHelperClass.getFeatureFlagValue(ZeroBalanceHelperClass.java:39)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.http.HttpEngine.followUpRequest(HttpEngine.java:1090)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:393)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
02-04 22:26:30.711 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.rubenwardy.minetestmodmanager.manager.ModInstallService.handleActionUrlInstall(ModInstallService.java:315)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at com.rubenwardy.minetestmodmanager.manager.ModInstallService.onHandleIntent(ModInstallService.java:151)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.os.Looper.loop(Looper.java:148)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
02-04 22:26:30.712 19844-22887/com.rubenwardy.minetestmodmanager W/System.err: Caused by: java.lang.ClassNotFoundException: android.net.ZeroBalanceHelper
02-04 22:26:30.713 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.Class.classForName(Native Method)
02-04 22:26:30.713 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
02-04 22:26:30.713 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
02-04 22:26:30.713 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
02-04 22:26:30.714 19844-22887/com.rubenwardy.minetestmodmanager W/System.err:  ... 15 more
02-04 22:26:30.714 19844-22887/com.rubenwardy.minetestmodmanager W/System.err: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

build.gradle

//noinspection GradleCompatible
//noinspection GradleCompatible
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"

    defaultConfig {
        applicationId "com.rubenwardy.minetestmodmanager"
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 10
        versionName "1.3.0"
        buildConfigField "boolean", "ENABLE_RATE_ME", "false"
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
}

Full Source Code of Project | Line of Crash

rubenwardy
  • 679
  • 5
  • 21
  • Gradle https://gist.github.com/rubenwardy/445eb874eb89d60bdc60b5222ad6afd2#file-build-gradle-L35 – rubenwardy Feb 07 '17 at 00:01
  • If you have retrofit, why are you using `HttpURLConnection` anyway? – OneCricketeer Feb 07 '17 at 00:03
  • it's legacy code to download a .zip file, RetroFit is used elsewhere. – rubenwardy Feb 07 '17 at 00:04
  • Gotcha. Have you seen this post? http://stackoverflow.com/questions/38173027/what-is-android-net-zerobalancehelper-in-android-studio-and-why-it-cause-errors – OneCricketeer Feb 07 '17 at 00:05
  • I have, resetting to factory defaults isn't a good solution as it just hides the problem - end users may have this problem as well – rubenwardy Feb 07 '17 at 00:05
  • I've just checked out old code that worked before, and it doesn't work now - so something has changed on my phone (possibly due to the Marshmellow upgrade) – rubenwardy Feb 07 '17 at 00:09
  • Yes, an Nougat one and it works (as said in the description) – rubenwardy Feb 07 '17 at 00:11
  • All I really know is that [`android.net`](https://developer.android.com/reference/android/net/package-summary.html) doesn't have a class by that name, so the error "makes sense," but it is strange. – OneCricketeer Feb 07 '17 at 00:13

1 Answers1

0

Turns out this is nothing to worry about, the problem was elsewhere - I'd typed the url as on_download instead of on-download. It looks like OKHTTP uses a try-catch to see if android.net.zerobalancehelper exists, possibly for backwards compatibility.

rubenwardy
  • 679
  • 5
  • 21