question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

generateDatabaseInterface fails with java.lang.NoSuchMethodError: kotlin.jvm.internal.FunctionReferenceImpl on older version of gradle that depend on kotlin 1.3

See original GitHub issue

Build Environment SQLDelight version: 1.5.0-SNAPSHOT OS: Ubuntu Gradle version: Build: Kotlin + Postgres Kotlin version: 1.4.32

Describe the bug

The latest snapshot has started failing when generating interfaces with no changes in application code

./gradlew generateMainProductDatabaseInterface

Execution failed for task ':catalog:generateMainProductDatabaseInterface'.
> A failure occurred while executing com.squareup.sqldelight.gradle.SqlDelightTask$GenerateInterfaces
   > kotlin.jvm.internal.FunctionReferenceImpl.<init>(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V

It looks like a problem with psi project

  1. A stacktrace
Caused by: java.lang.NoSuchMethodError: kotlin.jvm.internal.FunctionReferenceImpl.<init>(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
        at sqldelight.com.alecstrong.sql.psi.core.psi.mixins.ColumnNameMixin$parseRule$1.<init>(ColumnNameMixin.kt)
        at sqldelight.com.alecstrong.sql.psi.core.psi.mixins.ColumnNameMixin$parseRule$1.<clinit>(ColumnNameMixin.kt)
        at sqldelight.com.alecstrong.sql.psi.core.psi.mixins.ColumnNameMixin.<init>(ColumnNameMixin.kt:14)
        at sqldelight.com.alecstrong.sql.psi.core.psi.impl.SqlColumnNameImpl.<init>(SqlColumnNameImpl.java:17)
        at sqldelight.com.alecstrong.sql.psi.core.psi.SqlTypes$Factory.createElement(SqlTypes.java:396)
        at sqldelight.com.alecstrong.sql.psi.core.SqlParserUtil$createElement$1.invoke(SqlParserUtil.kt:14)
        at sqldelight.com.alecstrong.sql.psi.core.SqlParserUtil$createElement$1.invoke(SqlParserUtil.kt:13)
        at sqldelight.com.alecstrong.sql.psi.core.postgresql.PostgreSqlParserUtil$overrideSqlParser$8.invoke(PostgreSqlParserUtil.kt:253)
        at sqldelight.com.alecstrong.sql.psi.core.postgresql.PostgreSqlParserUtil$overrideSqlParser$8.invoke(PostgreSqlParserUtil.kt:15)
        at com.squareup.sqldelight.core.SqldelightParserUtil$overrideSqlParser$4.invoke(SqldelightParserUtil.kt:193)
        at com.squareup.sqldelight.core.SqldelightParserUtil$overrideSqlParser$4.invoke(SqldelightParserUtil.kt:15)
        at sqldelight.com.alecstrong.sql.psi.core.SqlParserDefinition.createElement(SqlParserDefinition.kt:28)
        at sqldelight.com.intellij.psi.impl.source.tree.CompositeElement.createPsiNoLock(CompositeElement.java:705)
        at sqldelight.com.intellij.psi.impl.source.tree.CompositeElement.getPsi(CompositeElement.java:692)
        at sqldelight.com.intellij.psi.impl.source.SourceTreeToPsiMap.treeElementToPsi(SourceTreeToPsiMap.java:30)
        at sqldelight.com.intellij.psi.impl.source.tree.SharedImplUtil.getFirstChild(SharedImplUtil.java:51)
        at sqldelight.com.intellij.extapi.psi.ASTDelegatePsiElement.getFirstChild(ASTDelegatePsiElement.java:99)
        at sqldelight.com.intellij.psi.PsiWalkingState$PsiTreeGuide.getFirstChild(PsiWalkingState.java:49)
        at sqldelight.com.intellij.psi.PsiWalkingState$PsiTreeGuide.getFirstChild(PsiWalkingState.java:31)
        at sqldelight.com.intellij.util.WalkingState.next(WalkingState.java:73)
        at sqldelight.com.intellij.util.WalkingState.walkChildren(WalkingState.java:61)
        at sqldelight.com.intellij.util.WalkingState.elementStarted(WalkingState.java:52)
        at sqldelight.com.intellij.psi.PsiWalkingState.elementStarted(PsiWalkingState.java:79)
        at sqldelight.com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitElement(PsiRecursiveElementWalkingVisitor.java:48)
        at sqldelight.com.intellij.psi.util.PsiTreeUtil$4.visitElement(PsiTreeUtil.java:886)
        at sqldelight.com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35)
        at sqldelight.com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitFile(PsiRecursiveElementWalkingVisitor.java:70)
        at sqldelight.com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:60)
        at sqldelight.com.intellij.psi.util.PsiTreeUtil.processElements(PsiTreeUtil.java:881)
        at sqldelight.com.intellij.psi.util.PsiTreeUtil.findChildOfType(PsiTreeUtil.java:249)
        at sqldelight.com.intellij.psi.util.PsiTreeUtil.findChildOfType(PsiTreeUtil.java:213)
        at sqldelight.com.alecstrong.sql.psi.core.SqlCoreEnvironment$annotate$1.invoke(SqlCoreEnvironment.kt:137)
        at sqldelight.com.alecstrong.sql.psi.core.SqlCoreEnvironment$annotate$1.invoke(SqlCoreEnvironment.kt:59)
        at com.squareup.sqldelight.core.SqlDelightEnvironment$forSourceFiles$1.invoke(SqlDelightEnvironment.kt:127)
        at com.squareup.sqldelight.core.SqlDelightEnvironment$forSourceFiles$1.invoke(SqlDelightEnvironment.kt:63)
        at sqldelight.com.alecstrong.sql.psi.core.SqlCoreEnvironment$forSourceFiles$1.processFile(SqlCoreEnvironment.kt:150)
        at sqldelight.com.alecstrong.sql.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqlCoreEnvironment.kt:197)
        at sqldelight.com.alecstrong.sql.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqlCoreEnvironment.kt:194)
        at sqldelight.com.alecstrong.sql.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqlCoreEnvironment.kt:194)
        at sqldelight.com.alecstrong.sql.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqlCoreEnvironment.kt:194)
        at sqldelight.com.alecstrong.sql.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqlCoreEnvironment.kt:194)
        at sqldelight.com.alecstrong.sql.psi.core.CoreFileIndex.iterateContent(SqlCoreEnvironment.kt:188)
        at sqldelight.com.alecstrong.sql.psi.core.SqlCoreEnvironment.forSourceFiles(SqlCoreEnvironment.kt:148)
        at com.squareup.sqldelight.core.SqlDelightEnvironment.forSourceFiles(SqlDelightEnvironment.kt:122)
        at sqldelight.com.alecstrong.sql.psi.core.SqlCoreEnvironment.annotate(SqlCoreEnvironment.kt:136)
        at com.squareup.sqldelight.core.SqlDelightEnvironment.generateSqlDelightFiles(SqlDelightEnvironment.kt:137)
        at com.squareup.sqldelight.gradle.SqlDelightTask$GenerateInterfaces.execute(SqlDelightTask.kt:97)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
        at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48)
        at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:42)
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)
        at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:42)
        at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49)
        at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30)
        at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.lambda$execute$0(IsolatedClassloaderWorkerFactory.java:58)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
        at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:50)
        at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:198)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        ... 6 more
  1. build.gradle:
sourceSets["main"].java.srcDir("build/generated/sqldelight/code/ProductDatabase")

sqldelight {
    database("ProductDatabase") {
        packageName = "gt.kk.catalog.schema"
        dialect = "postgresql"
        deriveSchemaFromMigrations = true
        migrationOutputDirectory = file("$projectDir/src/main/resources/db/migration")
        migrationOutputFileFormat = ".sql"
    }
}
./gradlew -v

------------------------------------------------------------
Gradle 6.4
------------------------------------------------------------

Build time:   2020-05-05 19:18:55 UTC
Revision:     42f7c3d0c3066b7b38bd0726760d4881e86fd19f

Kotlin:       1.3.71
Groovy:       2.5.10
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_252 (Oracle Corporation 25.252-b09)
OS:           Linux 5.3.0-62-generic amd64

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:7
  • Comments:6

github_iconTop GitHub Comments

6reactions
dbacinskicommented, Apr 26, 2021
plugins {
    java
    kotlin("jvm") version "1.4.32"
}

I think I have found a solution. The problem is with Gradle 6.4 which depends on Kotlin 1.3.71.

When I have switched to Gradle 7.0 (Kotlin 1.4.31) build has started passing.

Not sure how it is relevant but now it works. Maybe it would be good to update sqldelight 1.5.0 release notes to include a note about it.

0reactions
GuilhEcommented, Apr 30, 2021

Had the same problem, in my case I was using kotlin("jvm") version "1.4.30", but after updating to kotlin("jvm") version "1.4.32" it worked. My gradle is gradle-6.8.3-bin.zip

Read more comments on GitHub >

github_iconTop Results From Across the Web

Function references give runtime NoSuchMethodError when ...
NoSuchMethodError : 'void kotlin.jvm.internal. ... Object, java.lang. ... The failure is usually caused by using an old version (<=1.3.x) of the stdlib in ......
Read more >
Missing kotlin.jvm.internal.FunctionReferenceImpl raised for ...
I have found the problem. I noticed that I had updated the Gradle on the M1. So it must have been something with...
Read more >
What's new in Kotlin 1.7.20
The Alpha version of the new K2 compiler only works with JVM projects. It doesn't support Kotlin/JS, Kotlin/Native, or other multiplatform ...
Read more >
gradleApi() kotlin side-effects | by Martin Macura - Medium
When we run this now, we get this error. Exception in thread "main" java.lang.NoSuchMethodError: 'void kotlin.jvm.internal.FunctionReferenceImpl ...
Read more >
Navigation | Android Developers
titleCase(char, java.util.Locale)'' error when using Gradle 6.7.0 due to a dependency on an older version of Kotlin.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found