본문 바로가기
Programing/kotlin

Kotlin: [Internal Error] java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY

by Tomining 2024. 5. 24.

Intellij 에서 오랜만에 Kotlin 프로젝트를 빌드하다 아래와 같은 오류를 만났다.

Kotlin: [Internal Error] java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY
	at org.jetbrains.kotlin.jps.targets.KotlinJvmModuleBuildTarget.updateChunkMappings(KotlinJvmModuleBuildTarget.kt:362)

 

처음 보는 오류이다.

믿었던 ChatGPT-4o 는 이상한 말만 늘어놨다.

더보기

오류 `java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY`는 주로 Gradle과 Kotlin 버전의 호환성 문제로 발생합니다. 이 문제를 해결하기 위해 다음 단계를 시도해 보세요.

### 1. Gradle 및 Kotlin 버전 확인
Gradle과 Kotlin 플러그인이 최신 버전인지 확인하고, 호환되는 버전으로 업데이트하세요.

#### 최신 Kotlin 버전 사용하기
최신 Kotlin 버전은 1.9.0입니다. `build.gradle` 파일에서 다음과 같이 Kotlin 버전을 설정합니다:

```groovy
plugins {
    id "org.jetbrains.kotlin.jvm" version "1.9.0"
}
```

### 2. Gradle Wrapper 업데이트
`gradle-wrapper.properties` 파일에서 Gradle의 최신 버전으로 업데이트합니다. 최신 Gradle 버전은 [Gradle 공식 웹사이트](https://gradle.org/releases/)에서 확인할 수 있습니다.

```properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
```

### 3. Gradle 캐시 정리
Gradle 캐시를 정리하고, 모든 종속성을 다시 다운로드합니다.

```sh
./gradlew clean
./gradlew --refresh-dependencies
```

### 4. 모든 종속성 확인 및 최신 버전으로 업데이트
`build.gradle` 파일에서 사용 중인 모든 종속성을 최신 버전으로 업데이트합니다.

```groovy
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
    // 다른 종속성들도 최신 버전으로 업데이트
}
```

### 5. JVM 옵션 설정
위의 방법들로 해결되지 않는다면, JVM 옵션을 추가하여 시도해볼 수 있습니다. 예를 들어, Gradle을 통해 프로젝트를 빌드할 때 다음과 같이 JVM 옵션을 설정합니다:

```groovy
tasks.withType(JavaCompile) {
    options.compilerArgs += ["--add-opens", "java.base/java.lang=ALL-UNNAMED"]
}
```

### 6. 전체 프로젝트 재설정
모든 설정을 다시 확인하고, 프로젝트를 다시 설정하여 Gradle 및 Kotlin 구성 요소들이 올바르게 설정되었는지 확인합니다.

위의 방법들을 적용하여 문제를 해결할 수 있습니다. 그래도 문제가 지속된다면, 구체적인 프로젝트 설정 파일을 공유해주시면 추가적인 도움을 드릴 수 있습니다.

(동료가 발견해 준...) 2024.01 버전을 사용하고 있었는데, 버그가 있는 것으로 보인다.

https://youtrack.jetbrains.com/issue/EDU-6776/Getting-error-Kotlin-Internal-Error-java.lang.NoSuchFieldError-in-JetBrains-Academy-Plugin

 

결국은 2023.03 버전으로 다운그레이드 (Archive)

몇 시간 Intellij 와 삽질은 정말로 무의미한 삽질이 되었다. ㅠㅠ