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

无法访问Expression类求助:Java类文件版本不兼容报错

解决Android计算器中MathParser.org-mXparser类版本不兼容问题

问题原因

你遇到的错误核心是版本不匹配:MathParser.org-mXparser.jar是用Java 18(类版本62.0)编译的,而你的Android开发环境使用的是Java 11(类版本55.0),Java虚拟机无法加载高版本编译的类文件。

解决方案

方案1:替换为兼容Java 11的mXparser版本

mXparser在v4.4.0及之前的版本是基于Java 8/11编译的,完全适配你的当前环境:

  • 删除app/libs/MathParser.org-mXparser.jar文件
  • 可以直接通过Gradle依赖引入兼容版本,打开模块级build.gradle,在dependencies块添加:
implementation 'org.mariuszgromada.math:MathParser.org-mXparser:4.4.0'
  • 点击Sync Now同步项目后重新编译

方案2:升级项目Java版本到18

如果想保留当前的mXparser版本,需要把项目的Java编译环境升级到18:

  1. 确保项目根目录的build.gradle中gradle插件版本支持Java 18(比如7.4及以上):
plugins {
    id 'com.android.application' version '7.4.2' apply false
    id 'com.android.library' version '7.4.2' apply false
}
  1. 修改模块级build.gradle的编译配置:
android {
    compileSdk 33 // 需使用支持Java 18的SDK版本

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_18
        targetCompatibility JavaVersion.VERSION_18
    }

    // 若项目使用Kotlin,需同步修改jvmTarget
    kotlinOptions {
        jvmTarget = '18'
    }
}
  1. 同步项目后重新编译

额外代码修正

你代码中的字符串替换逻辑存在问题,String是不可变类型,replaceAll不会修改原字符串,需要重新赋值:

String userexp = operation.getText().toString();
userexp = userexp.replaceAll("÷", "/");
userexp = userexp.replaceAll("×", "*");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:05:27