google / dagger

A fast dependency injector for Android and Java.
https://dagger.dev
Apache License 2.0
17.42k stars 2.01k forks source link

Project not compiling after adding dagger #651

Closed modislaszlox2 closed 7 years ago

modislaszlox2 commented 7 years ago

Error:java.lang.RuntimeException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V Error:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V

Classpath for compiling the main sources.

+--- project :cloud-service
|    +--- com.android.support:support-annotations:25.3.0
|    +--- com.google.apis:google-api-services-drive:v3-rev57-1.22.0
|    |    \--- com.google.api-client:google-api-client:1.22.0
|    |         +--- com.google.oauth-client:google-oauth-client:1.22.0
|    |         |    +--- com.google.http-client:google-http-client:1.22.0
|    |         |    |    \--- com.google.code.findbugs:jsr305:1.3.9
|    |         |    \--- com.google.code.findbugs:jsr305:1.3.9
|    |         +--- com.google.http-client:google-http-client-jackson2:1.22.0
|    |         |    +--- com.google.http-client:google-http-client:1.22.0 (*)
|    |         |    \--- com.fasterxml.jackson.core:jackson-core:2.1.3 -> 2.7.4
|    |         \--- **com.google.guava:guava-jdk5:17.0**
|    +--- com.github.liveservices.LiveSDK-for-Android:src:master-SNAPSHOT
|    +--- com.dropbox.core:dropbox-core-sdk:2.1.2
|    |    \--- com.fasterxml.jackson.core:jackson-core:2.7.4
|    +--- com.squareup.okhttp3:okhttp:3.6.0
|    |    \--- com.squareup.okio:okio:1.11.0
|    \--- com.google.code.gson:gson:2.8.0
+--- com.android.support:multidex:1.0.1
+--- com.android.support:appcompat-v7:25.3.0
|    +--- com.android.support:support-annotations:25.3.0
|    +--- com.android.support:support-v4:25.3.0
|    |    +--- com.android.support:support-compat:25.3.0
|    |    |    \--- com.android.support:support-annotations:25.3.0
|    |    +--- com.android.support:support-media-compat:25.3.0
|    |    |    +--- com.android.support:support-annotations:25.3.0
|    |    |    \--- com.android.support:support-compat:25.3.0 (*)
|    |    +--- com.android.support:support-core-utils:25.3.0
|    |    |    +--- com.android.support:support-annotations:25.3.0
|    |    |    \--- com.android.support:support-compat:25.3.0 (*)
|    |    +--- com.android.support:support-core-ui:25.3.0
|    |    |    +--- com.android.support:support-annotations:25.3.0
|    |    |    \--- com.android.support:support-compat:25.3.0 (*)
|    |    \--- com.android.support:support-fragment:25.3.0
|    |         +--- com.android.support:support-compat:25.3.0 (*)
|    |         +--- com.android.support:support-media-compat:25.3.0 (*)
|    |         +--- com.android.support:support-core-ui:25.3.0 (*)
|    |         \--- com.android.support:support-core-utils:25.3.0 (*)
|    +--- com.android.support:support-vector-drawable:25.3.0
|    |    +--- com.android.support:support-annotations:25.3.0
|    |    \--- com.android.support:support-compat:25.3.0 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.0
|         \--- com.android.support:support-vector-drawable:25.3.0 (*)
+--- com.android.support:design:25.3.0
|    +--- com.android.support:support-v4:25.3.0 (*)
|    +--- com.android.support:appcompat-v7:25.3.0 (*)
|    +--- com.android.support:recyclerview-v7:25.3.0
|    |    +--- com.android.support:support-annotations:25.3.0
|    |    +--- com.android.support:support-compat:25.3.0 (*)
|    |    \--- com.android.support:support-core-ui:25.3.0 (*)
|    \--- com.android.support:transition:25.3.0
|         +--- com.android.support:support-annotations:25.3.0
|         \--- com.android.support:support-v4:25.3.0 (*)
+--- com.android.support:percent:25.3.0
|    \--- com.android.support:support-compat:25.3.0 (*)
+--- com.android.support:recyclerview-v7:25.3.0 (*)
+--- com.android.support:cardview-v7:25.3.0
|    \--- com.android.support:support-annotations:25.3.0
+--- com.dmitrymalkovich.android:material-design-dimens:1.4
+--- com.simplecityapps:recyclerview-fastscroll:1.0.11
|    \--- com.android.support:recyclerview-v7:24.2.0 -> 25.3.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:5.1.0
+--- com.squareup.picasso:picasso:2.5.2
+--- com.android.volley:volley:1.0.0
+--- com.google.dagger:dagger:2.10
|    \--- javax.inject:javax.inject:1
+--- com.crashlytics.sdk.android:crashlytics:2.6.3
|    +--- com.crashlytics.sdk.android:beta:1.2.2
|    +--- com.crashlytics.sdk.android:answers:1.3.10
|    |    \--- io.fabric.sdk.android:fabric:1.3.14
|    +--- com.crashlytics.sdk.android:crashlytics-core:2.3.12
|    |    +--- com.crashlytics.sdk.android:answers:1.3.10 (*)
|    |    \--- io.fabric.sdk.android:fabric:1.3.14
|    \--- io.fabric.sdk.android:fabric:1.3.14
+--- com.android.databinding:library:1.3.1
|    +--- com.android.support:support-v4:21.0.3 -> 25.3.0 (*)
|    \--- com.android.databinding:baseLibrary:2.3.0-dev -> 2.3.0
+--- com.android.databinding:baseLibrary:2.3.0
\--- com.android.databinding:adapters:1.3.1
     +--- com.android.databinding:library:1.3 -> 1.3.1 (*)

The com.google.guava:guava-jdk5:17.0 dependency is creating this issue but I'm not sure how to fix it without importing guava.

Dagger is added with annotationProcessor as github page says

ronshapiro commented 7 years ago

You could add annotationProcessor 'com.google.guava:guava:21.0' (or maybe compile 'com.google.guava:guava:21.0', i'm not sure) to your build.gradle file as well. The library which depends on guava-jdk5 should defintiely be updated though

modislaszlox2 commented 7 years ago

Still having issues with annotationProcessor 'com.google.guava:guava:21.0'. I didn't want to use compile because I don't need guava.

ronshapiro commented 7 years ago

I've filed https://github.com/google/google-http-java-client/pull/352 on your behalf.

ronshapiro commented 7 years ago

Are you getting the same error when you add annotationProcessor 'com.google.guava:guava:21.0'? Or a different one?

FYI @lukesandberg

garrettjonesgoogle commented 7 years ago

I only see one dependency on guava in the dependency tree - where is the other one that is conflicting?

ronshapiro commented 7 years ago

That guava dependency is carried forward to the annotationProcessorPath (which I'm guessing isn't printed in the initial report)

garrettjonesgoogle commented 7 years ago

Adding the guava dependency on annotationProcessor probably isn't fixing the issue because guava-jdk5 is a distinct artifact, so its version won't be replaced by whatever version of guava you declare.

In google-cloud-java, we also depend on guava, so to resolve this we have added a transitive dependency exclusion - see here:

https://github.com/GoogleCloudPlatform/google-cloud-java/blob/master/google-cloud-core/pom.xml#L29

I'm not sure how to do this in gradle - you'll have to research that.

ronshapiro commented 7 years ago

probably something like:

compile('com.google.apis:google-api-services-drive:v3-rev57-1.22.0') {
      exclude group: 'com.google.guava' module: 'guava-jdk5'
}
compile 'com.google.guava:guava:21.0'

@modislaszlox2 whether or not you want it, it looks like you are getting Guava transitively from that path.

ronshapiro commented 7 years ago

Feel free to continue asking questions, but this is no longer a dagger issue, so i'm going to close this.

modislaszlox2 commented 7 years ago

@ronshapiro Thanks for your help I will add guava as dependency.