# Missing enclosing class files causes \`Class.getEnclosingClass\` throw \`NoClassDefFoundError\`

**URL:** <https://discuss.kotlinlang.org/t/missing-enclosing-class-files-causes-class-getenclosingclass-throw-noclassdeffounderror/6879>\
**Category:** Language Design\
**Created:** [March 5, 2018, 1:24am UTC](https://discuss.kotlinlang.org/t/missing-enclosing-class-files-causes-class-getenclosingclass-throw-noclassdeffounderror/6879 "2018-03-05T01:24:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![blindpirate](https://avatars.discourse-cdn.com/v4/letter/b/b5ac83/32.png) [@blindpirate](https://discuss.kotlinlang.org/u/blindpirate)\
**Post date:** [March 5, 2018, 1:24am UTC](https://discuss.kotlinlang.org/t/missing-enclosing-class-files-causes-class-getenclosingclass-throw-noclassdeffounderror/6879/1 "2018-03-05T01:24:31Z")

</div>

Recently I noticed a weird kotlin compiler behavior: some enclosing class files are missing.

Let me try to elaborate on it. A sample can be found at [GitHub - blindpirate/gradle-test-kotlin-extensions: Kotlin extensions for Gradle testing](https://github.com/blindpirate/gradle-test-kotlin-extensions)

- Run `./gradlew test`
- `javap -verbose 'build/classes/kotlin/test/com/mkobit/gradle/test/kotlin/io/FileContextTest$DirectoryContextTest$FileActionMaybeCreate$test$1$1$1$1.class'`

```auto
EnclosingMethod: #54.#56 // com.mkobit.gradle.test.kotlin.io.FileContextTest$DirectoryContextTest$FileActionMaybeCreate$test$1$1$1.call

```

However, `FileContextTest$DirectoryContextTest$FileActionMaybeCreate$test$1$1$1.class` doesn’t exist at all.

The consequence is, when we try to analyze `FileContextTest$DirectoryContextTest$FileActionMaybeCreate$test$1$1$1$1.class` and invoke its `getEnclosingClass`, an exception will be thrown:

```auto
Caused by: java.lang.NoClassDefFoundError: com/mkobit/gradle/test/kotlin/io/FileContextTest$DirectoryContextTest$FileActionMaybeCreate$test$1$1$1
	at java.lang.Class.getEnclosingMethod0(Native Method)
	at java.lang.Class.getEnclosingMethodInfo(Class.java:1072)
	at java.lang.Class.getEnclosingClass(Class.java:1272)

```

---

<div class="post-metadata">

**Author:** ![mbogdanov](https://avatars.discourse-cdn.com/v4/letter/m/838e76/32.png) [@mbogdanov](https://discuss.kotlinlang.org/u/mbogdanov)\
**Post date:** [March 7, 2018, 1:03pm UTC](https://discuss.kotlinlang.org/t/missing-enclosing-class-files-causes-class-getenclosingclass-throw-noclassdeffounderror/6879/2 "2018-03-07T13:03:56Z")

</div>

Problem relates to [https://youtrack.jetbrains.com/issue/KT-22663](https://youtrack.jetbrains.com/issue/KT-22663)
