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

Ubuntu终端编译引入android.util.Base64的Java代码报错如何解决

报错根因说明

你遇到的三个报错分为两类:

  1. 第一个报错是Java基础语法限制:public类的类名必须和对应的文件名完全一致,你声明了public class Simple,但文件名是test.java,匹配失败导致报错。
  2. 后两个报错是依赖缺失问题:android.util.Base64是安卓系统框架专属API,不属于标准OpenJDK的内置类库,你安装的android-libtutils是系统工具包,不会被Java编译器识别为类库依赖,在线编译器默认使用标准JDK也不会包含安卓专属API。

终端解决方案(无需Android Studio/Eclipse)

方案一:替换为标准JDK内置Base64(推荐,可直接本地运行)

如果只是验证Base64编解码逻辑,直接把安卓专属API替换为JDK8及以上版本内置的java.util.Base64即可,修改后代码如下:

import java.util.Base64;
// 注意如果你的文件名保持为test.java,需要去掉类的public修饰符,或者把文件名改为Simple.java
class Simple{
  public static void main(String args[]) throws Exception{
    String testing = "1234";
    String testnew = Base64.getEncoder().encodeToString(testing.getBytes("UTF-8"));
    System.out.println(testnew);
  }
}

修改完成后执行编译命令:

  • 若文件名改为Simple.java:javac Simple.java
  • 若文件名保持为test.java:javac test.java
    编译完成后执行java Simple即可得到输出结果MTIzNA==,和安卓Base64默认参数的输出完全一致。

方案二:引入安卓SDK的android.jar编译(保留原安卓API)

如果必须保留原安卓API的调用逻辑,只需单独下载对应安卓版本的android.jar包,编译时手动指定类路径即可:

  1. 下载任意版本安卓Platform SDK中的android.jar文件,放到本地任意目录,例如/opt/android-sdk/android.jar
  2. 执行编译命令时指定依赖路径:
javac -cp /opt/android-sdk/android.jar Simple.java

注意:该方式仅能解决编译报错,编译后的class文件无法直接在本地JRE运行,需要部署到安卓设备或模拟器上才能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:51:02