Flutter/Flutter
Execution failed for task ':photo_manager:compileReleaseKotlin'.> 'compileReleaseJavaWithJavac' task (current target is 1.8) and 'compileReleaseKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.Consider us
hyeonseong
2025. 4. 22. 12:28
에러 코드
photo_manager 라이브러리가 jvm을 1.8을 타겟으로 하지만, 현재 나의 jvm은 17이라고 맞춰달라고 한다.
Execution failed for task ':photo_manager:compileReleaseKotlin'.
> 'compileReleaseJavaWithJavac' task (current target is 1.8) and 'compileReleaseKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain:
원인
나의 jvm 상태
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
photo_manager 라이브러리의 jvm 상태
보면 JavaVersion.VERSION_1_8 로 셋팅되어 있어서 문제가 발생했다.
JavaVersion getJavaFromHome(String path) {
def releaseFile = new File(path, "release")
if (releaseFile.exists()) {
def pattern = Pattern.compile("JAVA_VERSION=\"(\\d+)\"")
def matcher = pattern.matcher(releaseFile.text)
if (matcher.find()) {
def version = matcher.group(1)
log("Get java version from release file: $version")
return JavaVersion.toVersion(version)
}
} else {
def javaBin = new File("${path}/bin/java")
if (javaBin.exists()) {
return JavaVersion.VERSION_1_8
} else if (new File("${path}/bin/java.exe").exists()) {
return JavaVersion.VERSION_1_8
}
return null
}
}
해결
Flutter 버전을 3.29.3으로도 올려보고, 구글링등 많은 시도를 했지만 결국 실패 했었다
결국 마지막으로 시도 해서 성공한 방안은
내 JVM을 변경하기엔 사이드 이펙트가 너무 많이 발생한다. ( 다른 라이브러리에도 영향을 미침 )
Android -> photo_manager -> build.gradle 경로로 이동해서 직접 jvm을 내 프로젝트와 동기화를 시켜주었다.
if (javaBin.exists()) {
return JavaVersion.VERSION_17
} else if (new File("${path}/bin/java.exe").exists()) {
return JavaVersion.VERSION_17
}