Ubuntu终端编译引入android.util.Base64的Java代码报错如何解决
报错根因说明
你遇到的三个报错分为两类:
- 第一个报错是Java基础语法限制:public类的类名必须和对应的文件名完全一致,你声明了
public class Simple,但文件名是test.java,匹配失败导致报错。 - 后两个报错是依赖缺失问题:
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包,编译时手动指定类路径即可:
- 下载任意版本安卓Platform SDK中的
android.jar文件,放到本地任意目录,例如/opt/android-sdk/android.jar - 执行编译命令时指定依赖路径:
javac -cp /opt/android-sdk/android.jar Simple.java
注意:该方式仅能解决编译报错,编译后的class文件无法直接在本地JRE运行,需要部署到安卓设备或模拟器上才能正常执行。
内容的提问来源于stack exchange,提问作者Joel Deleep
相关产品推荐
相关产品推荐

