You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下Flutter run报NoClassDefFoundError问题求助

问题

在Ubuntu 20.10系统升级Android Studio 22.2.1 Patch 1和openJDK-20后,在VS Code中执行flutter run命令失败,报错信息如下:

e: java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel
        at org.jetbrains.kotlin.com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
        at org.jetbrains.kotlin.com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:118)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:420)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:226)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:152)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:371)
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:105)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:249)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.access$compileIncrementally(IncrementalCompilerRunner.kt:38)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner$compile$2.invoke(IncrementalCompilerRunner.kt:80)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:92)
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:602)
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:93)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1644)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
        at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':location:compileDebugKotlin'.
> Internal compiler error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 7s
Running Gradle task 'assembleDebug'...                              7.8s
Exception: Gradle task assembleDebug failed with exit code 1

注:应用未使用Kotlin,且在MacOS系统可正常运行,已尝试更新ndkVersion至最新、删除build和.gradle文件夹,均无效。

可能原因与解决方法

  • 原因1:JDK版本与Kotlin编译环境不兼容
    OpenJDK 20属于较新的预览/非LTS版本,项目依赖的Kotlin编译器版本大概率对其支持不足,旧版Kotlin工具链无法适配JDK 20的API变化,从而触发NoClassDefFoundError。
    解决方法:

    1. 降级JDK至17(LTS版本,兼容性更稳定):
      • 安装OpenJDK 17:sudo apt install openjdk-17-jdk
      • 切换系统默认JDK:sudo update-alternatives --config java,选择OpenJDK 17对应的选项
      • 验证版本:java -version
    2. 在Flutter项目的android/gradle.properties中指定JDK路径:
      org.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64
      
      路径根据实际安装位置调整。
  • 原因2:Android Studio Kotlin插件与项目依赖版本不匹配
    升级Android Studio后,内置的Kotlin插件版本更新,但项目gradle配置中指定的Kotlin版本仍为旧版,导致编译时环境冲突。
    解决方法:

    1. 打开项目android/build.gradle文件,找到ext.kotlin_version,将其更新为与Android Studio内置版本一致的数值(可在Android Studio的Settings -> Languages & Frameworks -> Kotlin查看当前插件版本):
      buildscript {
          ext.kotlin_version = "1.8.22" // 替换为匹配的版本
          repositories {
              google()
              mavenCentral()
          }
          dependencies {
              classpath "com.android.tools.build:gradle:7.4.2"
              classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
          }
      }
      
    2. 执行flutter clean清除缓存,再重新运行flutter run。
  • 原因3:Gradle版本与JDK、Kotlin版本不兼容
    旧版Gradle无法适配高版本JDK或Kotlin,导致编译流程出错。
    解决方法:

    1. 打开项目android/gradle/wrapper/gradle-wrapper.properties,修改distributionUrl为兼容JDK 17的Gradle版本(如7.6及以上):
      distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
      
    2. 同步gradle配置后重新编译。
  • 原因4:VS Code Flutter插件未同步环境配置
    VS Code可能仍在调用旧的JDK或Kotlin环境路径,导致编译时工具链异常。
    解决方法:

    1. 在VS Code中打开命令面板(Ctrl+Shift+P),执行Flutter: Select SDK,确认选择的是正确的Flutter SDK路径
    2. 重启VS Code,清除缓存后重新运行flutter run

内容的提问来源于stack exchange,提问作者SePröbläm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:55:42