It seems that your project is configured in such a way that you depend on kotlin-stdlib 1.1 and kotlin-reflect 1.0. The most likely case is that you already have an explicit dependency on kotlin-stdlib 1.1 but have no dependency on kotlin-reflect, and some other library (which you depend on) depends on kotlin-reflect 1.0.
If that indeed is the case, the solution is to provide an explicit dependency on kotlin-reflect 1.1.
In Maven, add this to pom.xml:
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
In Gradle, add this to build.gradle:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}
See some info about this and related warnings in the official docs.
I fixed warning by overwriting kotlin version used in my app
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'org.jetbrains.kotlin' && requested.name == 'kotlin-reflect') {
details.useVersion kotlin_version
}
}
}
e.g. kotlin_version = 1.3.0
it happens when you are using the dagger in a kotlin project(android) and you have the kotlin version to be 1.7 i.e
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
all you have to do is add the dependency below to your app build gradle level
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"
firstly, figure out the reason by the gradle script below
./gradlew app:dependencies
(change app to your gradle module name)
+--- project :common
| +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.61
| | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
| | \--- org.jetbrains:annotations:13.0
| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3
| | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
| +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.12.0 -> 0.14.0
| | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.60 -> 1.3.61
Then, the dependency tree will be shown. check which dependency use the issue dependency.
If you found the dependency, decide how to solve it.
I'm not sure what is the best way. kindly just refer to it.
Make sure you use the same version of stdlib-jdk7 & kotlin-gradle-plugin dependencies to avoid warnings.
You can refere below example where stdlib-jdk7 & kotlin-gradle-plugin both have the same version
app-level build.gradle file
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0"
...
}
project-level build.gradle file
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0"
...
}
}
FOR ANDROID DEVELOPERS WITH ERROR OCCURING AT XML UNRECOGNIZED FILE
It if it in Android and thew error appears by not recognizing a xml file, you could search for some error in the xml folder files(in my case, one of the files had tag duplicated)
replace this
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.30'
with
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.30'
the version of library should be same as plugin in project level
classpath org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30
When this happens for the Lint task, one can list the dependencies with:
./gradlew -q dependencies app:dependencies --configuration lintClassPath
Which shows that eg. kotlin-stdlib-jdk8:1.4.32 is being used:
+--- org.jetbrains.kotlin:kotlin-reflect:1.4.32 (*)
\--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32 (*)
I've wrote a Gradle script, which equalizes all the Kotlin library versions:
// Runtime JAR files in the classpath should have the same version.
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def kotlinVersion = "1.6.0"
def requested = details.requested
if (requested.group == 'org.jetbrains.kotlin') {
List<String> list = ['kotlin-stdlib', 'kotlin-stdlib-jdk7', 'kotlin-stdlib-jdk8', 'kotlin-stdlib-common']
if (list.contains(requested.name)) { details.useVersion kotlinVersion }
}
}
}
There is no other way, because some older versions are being pulled in by build tools.
One likely could also add kotlin-reflect into the List<String> list (not tested).
The Kotlin version in build.gradle and the one bundled with your IDE are of different versions. Check the kotlin version in build.gradle (app) and in Tools -> Kotlin -> Configure Kotlin Plugin Updates.