1. AidLux 平板上的 Java 开发环境到底缺什么
AidLux 是一个把完整 Linux 用户态跑在 Android 设备上的运行环境,平板装上它之后,你手里其实就有了一台 ARM64 的 Linux 小主机。很多人第一反应是拿它跑 Python 或者做爬虫,但如果你想把 Java 工程也搬到平板上,会发现事情没那么顺:JDK 要选对架构、环境变量要写进两个地方、VS Code 远程连上来之后还要单独告诉它 JDK 在哪。这几步任何一步漏掉,表现都是「终端里 java -version 正常,但 VS Code 里新建的 Java 文件全是红波浪线」。
这篇要解决的就是这条完整链路:在 AidLux 里装好 ARM64 的 JDK,把环境变量落到/etc/profile和/root/.bashrc,再用 VS Code 远程连上去,通过settings.json指定java.home,最后编译运行一个能跑通的 Java 工程。同时把模型调用的 Key 和 API 通道统一交给 TaoToken 管理,这样你在平板上写代码、让 AI 辅助补全或排错时,不用在多个工具里反复填不同的地址和密钥。
适合谁看:手里有 Android 平板、装了 AidLux、想在上面维护一个正经 Java 项目的人;或者你已经在平板上装了 VS Code 但 Java 插件一直报错,想找到根因的人。核心检索词就是 AidLux、Java 环境配置、JDK、VS Code 远程,这几个词会贯穿全文。
先说清楚一个前提:AidLux 里的 Linux 是 ARM64 架构,不是 x86_64。你在网上搜到的绝大多数 JDK 下载链接默认给的是 x64 包,装上去会直接报cannot execute binary file。所以第一步选包就必须选 aarch64 版本,这是后面所有步骤能成立的基础。
另外,VS Code 在 AidLux 场景下有两种用法:一种是在平板本地装 VS Code 的 Linux 版,另一种是用另一台电脑通过 Remote-SSH 连到 AidLux。两种方式对java.home的配置位置要求不一样,后面会分别说。我实测下来,用 Remote-SSH 从笔记本连平板更顺手,因为平板屏幕敲代码确实累,但配置逻辑是相通的。
2. 装 JDK 与 TaoToken 前置准备:ARM64 包怎么选、Key 怎么拿
2.1 选对 JDK 版本和架构
JDK 版本这块有个坑必须提前讲。VS Code 的 Java 插件里,Language Support for Java by Red Hat对 JDK 有硬性版本要求:0.64.1 及以下支持 JDK 8,高于 0.64.1 需要 JDK 11,而最新版最低要求 JDK 17。如果你装的是 JDK 11,但插件自动更新到了最新版,就会看到插件启动失败或者 Java 文件无法解析。
我的建议是:平板这种资源有限的设备,装 JDK 17 的 aarch64 版本最省心,既满足最新插件要求,又不用频繁降级插件。如果你有历史项目必须用 JDK 8,那就把插件锁在 0.64.1,别让它自动升级。
下载地址去 Adoptium(Eclipse Temurin)或者 Azul Zulu 的官网,筛选 Operating System 选 Linux,Architecture 选 aarch64,Package Type 选 JDK,然后下载 tar.gz 包。文件名大概长这样:OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.9_9.tar.gz。注意别下成.deb或者.rpm,AidLux 里用 tar.gz 最直接。
2.2 把包放进 /opt 并解压
下载完成后,用 AidLux 的文件浏览器把 tar.gz 移动到/opt目录。如果你习惯命令行,也可以直接mv。然后打开终端:
cd /opt ls tar -zxvf OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.9_9.tar.gz ls解压后会得到一个类似jdk-17.0.9+9的目录。记住这个路径,后面JAVA_HOME就指向它。你可以用pwd确认一下完整路径,比如/opt/jdk-17.0.9+9。
2.3 配置环境变量到 /etc/profile
这一步是让所有用户和所有 shell 都能找到 java 命令。用 vim 打开:
vim /etc/profile在文件末尾追加以下内容,注意把JAVA_HOME换成你自己的实际路径:
export JAVA_HOME=/opt/jdk-17.0.9+9 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH保存退出后,让配置立即生效:
source /etc/profile java -version如果输出了版本号,说明/etc/profile这一层已经通了。
2.4 再写一份到 /root/.bashrc
为什么还要写一遍?因为 AidLux 的终端在启动时,某些情况下不会完整加载/etc/profile,尤其是你通过 VS Code 远程打开终端时,它走的是非登录 shell,只读.bashrc。所以保险起见,把同样的 export 写进/root/.bashrc:
vim /root/.bashrc在export XMODIFIERS="@im=fcitx"和cd /root之间插入那四行 export,然后:
source /root/.bashrc java -version两次都能看到版本号,环境变量这关才算真正过了。
2.5 TaoToken 前置:统一 Key 和 API 通道
在平板上做 Java 开发,你大概率会用到 AI 辅助:让模型帮你解释报错、生成样板代码、或者做代码审查。如果每个工具都单独配一套 Key 和地址,管理起来很乱。TaoToken 的作用就是把这些模型调用统一到一个入口。
你需要先去官网拿到 API Key,然后记下两个地址:官网是https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,API 基地址是https://taotoken.net/api。注意 API 地址后面不加 UTM 参数,直接用它作为 Base URL。
拿到 Key 之后,后面在 VS Code 的插件配置里,Base URL 填https://taotoken.net/api,API Key 填你申请到的那串,Model ID 填你要用的模型名。这三件套(Base URL + Key + Model ID)是后面所有配置的核心,缺一个都会报 401。
3. 可复制配置:settings.json 与 config.toml 骨架
3.1 VS Code 里指定 java.home
装好Extension Pack for Java之后,插件会自动带上 Language Support、Debugger、Test Runner 等六个扩展。但插件不知道你的 JDK 装在哪,所以要手动告诉它。
按Ctrl+Alt+P打开命令面板,搜索Configure Java Runtime,点击 User Setting,再点 Edit in settings.json。如果这个入口找不到,就点左下角齿轮图标 → Settings → 搜索javahome→ 选 Java → 找到Java: Home→ 点 Edit in settings.json。
在打开的settings.json里写入:
{ "java.home": "/opt/jdk-17.0.9+9", "java.configuration.runtimes": [ { "name": "JavaSE-17", "path": "/opt/jdk-17.0.9+9", "default": true } ], "java.jdt.ls.vmargs": "-Xmx512m" }这里java.home是给插件本身找 JDK 用的,java.configuration.runtimes是告诉项目用哪个运行时。平板内存有限,加一条-Xmx512m限制语言服务器的堆内存,避免它把平板拖卡。
如果你用的是 Remote-SSH 从另一台电脑连 AidLux,这个settings.json要写在远程端的用户设置里,不是本地。判断方法:看 VS Code 左下角是不是显示SSH: xxx,是的话就改远程设置。
3.2 模型调用通道的 config.toml 骨架
如果你在平板上用支持 TOML 配置的 AI 编码工具(比如某些 CLI 助手),可以准备一份config.toml。路径一般放在用户目录下,比如/root/.config/你的工具名/config.toml。骨架如下:
[model] provider = "taotoken" base_url = "https://taotoken.net/api" api_key = "你的_TaoToken_Key" model_id = "你的模型ID" [request] timeout = 60 max_retries = 3注意base_url就是https://taotoken.net/api,不要在后面加斜杠或者多余路径。api_key换成你申请到的真实 Key。model_id填你要调用的模型名称,具体可用的模型列表在控制台里能看到。
3.3 环境变量方式兜底
有些工具不读 TOML,只认环境变量。那就在/root/.bashrc里再加两行:
export TAOTOKEN_API_KEY="你的_TaoToken_Key" export TAOTOKEN_BASE_URL="https://taotoken.net/api"这样无论工具怎么读配置,都能拿到统一的地址和密钥。改完记得source /root/.bashrc。
3.4 一个最小 Java 工程结构
为了验证整条链路,建一个最简单的工程:
mkdir -p /root/java-demo/src cd /root/java-demo新建src/Hello.java:
public class Hello { public static void main(String[] args) { System.out.println("AidLux Java OK"); System.out.println("Java version: " + System.getProperty("java.version")); } }这个文件后面用来做编译运行验证。
4. 验证请求:编译运行与模型调用双通道测试
4.1 命令行编译运行
先不依赖 VS Code,纯命令行验证 JDK 是否真的可用:
cd /root/java-demo javac -d out src/Hello.java java -cp out Hello如果输出:
AidLux Java OK Java version: 17.0.9说明 JDK 安装、环境变量、编译运行这条链路全通了。这一步很重要,因为如果命令行都跑不通,VS Code 里更不可能跑通,先排除 JDK 本身的问题。
4.2 VS Code 里运行
用 VS Code 打开/root/java-demo文件夹。等 Language Support 插件加载完成,左下角应该显示 Java 项目已就绪。打开Hello.java,你应该能看到main方法上方出现 Run 和 Debug 的小按钮。点 Run,终端里会输出同样的结果。
如果此时 Java 文件仍然有红波浪线,但命令行能编译,那基本就是java.home没配对,或者插件用的 JDK 和终端用的不是同一个。回到settings.json检查路径是否和/opt下的实际目录完全一致,注意大小写和加号。
4.3 验证 TaoToken 通道
模型调用这块,用一个最简单的 curl 请求验证 Key 和地址是否通:
curl -X POST "https://taotoken.net/api/v1/chat/completions" \ -H "Authorization: Bearer 你的_TaoToken_Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'如果返回的 JSON 里有choices字段,说明 Base URL、Key、Model ID 三件套都正确。如果返回 401,就是 Key 错了;如果返回local proxy failed之类的连接错误,检查网络和地址是否写成了https://taotoken.net/api而不是别的路径。
4.4 在 VS Code 里触发一次 AI 辅助
如果你装了支持自定义 API 的 AI 插件,把 Base URL 填https://taotoken.net/api,Key 填进去,Model ID 填上。然后在Hello.java里选中一段代码,让模型解释它。能正常返回内容,就说明平板上的 Java 开发环境和模型调用通道都打通了。
这一步的意义在于:你以后在平板上写 Java,遇到不认识的报错,可以直接把报错贴给模型,让它结合你的代码上下文给建议,而不用切到别的设备。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
5.1 401 Unauthorized
这是最常见的。原因通常是 Key 填错、Key 过期、或者 Base URL 写成了带 UTM 的官网地址而不是 API 地址。检查两点:Authorization头里是不是Bearer加你的 Key,中间有空格;Base URL 是不是https://taotoken.net/api。如果你在config.toml里写的是官网地址,那必然 401,因为官网不是 API 端点。
5.2 local proxy failed
这个报错一般出现在工具尝试走本地代理但代理没起来的时候。如果你没有配任何本地代理,那大概率是 Base URL 写错了,工具把它当成了本地地址去连。确认base_url是完整的https://taotoken.net/api,不要写成localhost或者127.0.0.1。另外检查环境变量里有没有残留的HTTP_PROXY设置,有的话先 unset 掉。
5.3 reading choices 相关报错
当工具返回的 JSON 里没有choices字段,或者解析choices时失败,通常意味着请求根本没到达模型服务,或者返回的是错误结构。先用 4.3 的 curl 命令单独测一次,确认 API 本身能返回正常结构。如果 curl 正常但工具报错,那就是工具的配置格式问题,检查model_id是否和请求体里的model字段一致。
5.4 OAuth 相关报错
有些工具默认走 OAuth 登录流程,而不是 API Key。如果你看到 OAuth 报错,说明工具在尝试用账号授权而不是 Key 认证。这时候要去工具的设置里找「使用 API Key」或者「自定义 Provider」的选项,把认证方式从 OAuth 切成 API Key,然后填 TaoToken 的三件套。如果工具只支持 OAuth 不支持 API Key,那它就不适合接 TaoToken,换一个支持自定义 Base URL 的工具。
5.5 java.home 配了但插件仍报错
检查settings.json是不是写在了正确的作用域。本地 VS Code 和 Remote-SSH 的设置是分开的。如果你连的是远程 AidLux,要改远程端的 settings。另外,改完settings.json后,按Ctrl+Shift+P执行Java: Clean Java Language Server Workspace,然后重启 VS Code,让插件重新读取配置。
5.6 插件版本与 JDK 版本不匹配
前面提过,最新版 Language Support 要求 JDK 17。如果你装的是 JDK 11,插件会报「需要 JDK 17 或更高」。解决办法要么升级 JDK 到 17,要么把插件降级到支持 JDK 11 的版本。在 VS Code 扩展面板里找到该插件,点齿轮 → Install Another Version,选一个兼容的版本。
5.7 平板内存不足导致语言服务器崩溃
AidLux 平板内存通常不大,Java 语言服务器启动后可能吃掉几百 MB。如果它频繁崩溃,在settings.json里加"java.jdt.ls.vmargs": "-Xmx512m"限制堆大小。如果还是不行,考虑关掉一些不用的插件,或者只在需要时打开 Java 项目。
6. 把 Key 和通道固定下来,后续少折腾
走到这里,你的 AidLux 平板上应该已经能:终端里java -version正常输出、VS Code 里 Java 文件不再报错、javac和java能编译运行、模型调用通道也能返回正常结果。这套环境搭好之后,日常使用中最容易出问题的其实不是 JDK 本身,而是 Key 和地址的散落管理。
我的做法是把 TaoToken 的 Base URL 和 Key 固定成环境变量,写在/root/.bashrc里,所有需要模型调用的工具都从环境变量读。这样换 Key 的时候只改一个地方,不用去每个工具的配置文件里翻。如果你用的是支持config.toml的工具,就把base_url和api_key写进 TOML,和环境变量保持一致。
另外一个小技巧:在平板这种小屏设备上,VS Code 的 Java 插件面板可以收起来,用命令面板操作更快。Ctrl+Alt+P然后输入Java:就能看到所有可用命令,比如重新加载项目、清理工作区、查看运行时。比在侧边栏里点来点去省事。
如果你后面要长期在平板上维护 Java 工程,建议把 JDK 路径、settings.json、config.toml这三样东西记在一个笔记里,换设备或者重装 AidLux 时直接复制,能省掉大量重复排查的时间。环境配置这种事,第一次搭通之后,后面就是复制粘贴的功夫。