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

在Android中运行Kotlin脚本遇依赖访问错误,是否缺少依赖?

解决方案

问题核心在于Android平台默认不包含JSR223规范的javax.script API包,你添加的Kotlin脚本依赖依赖于这套API,但Android SDK并未内置,因此出现找不到父类的错误。

步骤1:补充缺失的API依赖

在Module级别的build.gradle(或build.gradle.kts)中添加javax.script-api依赖,与你已有的Kotlin脚本依赖放在一起:

implementation "javax.script:javax.script-api:1.0"
implementation "org.jetbrains.kotlin:kotlin-scripting-jsr223:1.7.22"
implementation "org.jetbrains.kotlin:kotlin-script-runtime:1.7.22"
implementation "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.22"

步骤2:配置Java版本兼容性

Android Gradle Plugin需要明确指定Java 8+版本以支持Kotlin脚本引擎,在android代码块中添加以下配置:

android {
    // 其他已有配置...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

步骤3:(可选)添加ProGuard规则(若开启混淆)

如果你的项目启用了代码混淆,需在proguard-rules.pro中添加规则避免脚本相关类被混淆:

-keep class javax.script.** { *; }
-keep class kotlin.script.experimental.** { *; }
-keep class org.jetbrains.kotlin.com.intellij.** { *; }

验证代码

修改你的Activity代码,添加日志输出验证脚本执行结果:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
        val engine = KotlinJsr223DefaultScriptEngineFactory().getScriptEngine()
        engine.eval("val x = 3")
        val result = engine.eval("x + 2")
        Log.d("ScriptDemo", "脚本执行结果:$result") // 输出应为5
    }
}

内容的提问来源于stack exchange,提问作者Taylor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:35:17