--- title: Java 管理 description: 自动 Java 检测、下载和安装 --- # Java 管理 DropOut 提供全面的 Java 管理,自动检测已安装的版本并根据需要下载新版本。 ## 自动检测 ### 系统扫描 DropOut 扫描多个位置查找 Java 安装: **Linux:** - `/usr/lib/jvm/` - `/usr/java/` - `$JAVA_HOME` - `PATH` 环境变量 **macOS:** - `/Library/Java/JavaVirtualMachines/` - `/System/Library/Java/JavaVirtualMachines/` - `$JAVA_HOME` - `PATH` 环境变量 **Windows:** - `C:\Program Files\Java\` - `C:\Program Files (x86)\Java\` - `%JAVA_HOME%` - `PATH` 环境变量 - Windows 注册表 ### 版本检测 对于找到的每个 Java 安装,DropOut 会: 1. 运行 `java -version` 获取版本信息 2. 解析主要版本(8、11、17、21 等) 3. 检测架构(x64、ARM64) 4. 识别供应商(Oracle、Adoptium 等) ### 结果 所有检测到的 Java 安装都显示在设置 → Java 中: - 版本号 - 安装路径 - 架构 - 当前选择状态 ## Java 下载 ### Adoptium 集成 DropOut 集成了 Eclipse Adoptium API 以下载高质量的免费 JDK/JRE 构建版本。 **支持的版本:** - Java 8(LTS) - Java 11(LTS) - Java 17(LTS) - Java 21(LTS) - Java 23+(最新版) **功能:** - 自动平台检测 - 特定架构的构建版本 - JDK 或 JRE 选择 - 校验和验证 ### 下载过程 1. 导航到设置 → Java 2. 点击"下载 Java" 3. 选择版本(例如 Java 17) 4. 选择 JDK 或 JRE 5. 点击下载 6. 等待下载和解压 **进度跟踪:** - 实时下载速度 - ETA 计算 - 解压进度 - 安装确认 ### 目录管理 Java 目录缓存 24 小时以提高性能: ```rust // 目录结构 { "versions": [ { "version": "17.0.9+9", "major": 17, "url": "https://api.adoptium.net/...", "sha256": "...", "size": 123456789 } ], "last_updated": 1234567890 } ``` **刷新:** - 24 小时后自动刷新 - 设置中手动刷新 - 下载失败时强制刷新 ## 安装 ### 下载目录 下载的 Java 运行时安装到: ``` ~/.local/share/com.dropout.launcher/java/ (Linux) ~/Library/Application Support/com.dropout.launcher/java/ (macOS) %APPDATA%/com.dropout.launcher/java/ (Windows) ``` ### 目录结构 ``` java/ ├── jdk-17.0.9+9/ │ ├── bin/ │ │ └── java (或 java.exe) │ └── lib/ ├── jdk-21.0.1+12/ │ ├── bin/ │ └── lib/ └── download_queue.json ``` ### 解压 1. 下载到 `.part` 文件 2. 验证校验和 3. 解压存档: - Linux/macOS 上的 `.tar.gz` - Windows 上的 `.zip` 4. 移动到 `java//` 目录 5. 设置可执行权限(Unix) ## 配置 ### 内存分配 在设置中配置 JVM 内存: **最小内存:** - 默认:1024 MB - 推荐:原版 2048 MB - 推荐:模组 4096+ MB **最大内存:** - 默认:4096 MB - 根据系统 RAM 调整 - 为操作系统和其他应用留出 4GB **格式:** ```bash -Xms1024M -Xmx4096M ``` ### 自定义 JVM 参数 为高级配置添加自定义 JVM 参数: **常用参数:** ```bash # 垃圾回收 -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions # 性能 -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 # 内存 -XX:G1HeapRegionSize=32M ``` ### Java 路径选择 **自动选择:** - DropOut 为每个 Minecraft 版本推荐最佳 Java 版本 - Java 8 用于 Minecraft 1.12.2 及更早版本 - Java 17 用于 Minecraft 1.18-1.20.4 - Java 21 用于 Minecraft 1.20.5+ **手动选择:** 1. 前往设置 → Java 2. 从检测到的安装中选择 3. 或指定自定义路径 ## 版本推荐 ### Minecraft 版本 → Java 版本 | Minecraft 版本 | 推荐 Java | 最低 Java | |-------------------|------------------|--------------| | 1.7.10 及更早 | Java 8 | Java 8 | | 1.8 - 1.12.2 | Java 8 | Java 8 | | 1.13 - 1.16.5 | Java 8 或 11 | Java 8 | | 1.17 - 1.17.1 | Java 16 | Java 16 | | 1.18 - 1.20.4 | Java 17 | Java 17 | | 1.20.5+ | Java 21 | Java 21 | ### 模组 Minecraft **Fabric:** - 通常与原版要求匹配 - 一些模组可能需要更新的 Java **Forge:** - 可能需要特定的 Java 版本 - 检查模组加载器文档 - 通常需要完全匹配版本 ## 故障排除 ### 未检测到 Java **问题:** 已安装的 Java 未显示 **解决方案:** 1. 验证 Java 在标准位置 2. 检查 `JAVA_HOME` 环境变量 3. 将 Java `bin` 目录添加到 `PATH` 4. 重启 DropOut 5. 手动选择路径 ### 下载失败 **问题:** Java 下载未完成 **解决方案:** 1. 检查互联网连接 2. 验证磁盘空间 3. 尝试不同版本 4. 清除下载队列 5. 从 Adoptium 手动下载 ### Java 版本错误 **问题:** 由于 Java 版本导致游戏崩溃 **解决方案:** 1. 检查 Minecraft 版本要求 2. 下载正确的 Java 版本 3. 在设置中选择适当的 Java 4. 验证 Java 路径正确 ### 内存不足错误 **问题:** 游戏因内存错误崩溃 **解决方案:** 1. 增加最大内存分配 2. 关闭其他应用程序 3. 升级系统 RAM 4. 使用 64 位 Java 5. 优化 JVM 参数 ### 性能问题 **问题:** 低 FPS 或卡顿 **解决方案:** 1. 调整内存分配(不要太高!) 2. 启用 G1GC 垃圾收集器 3. 添加性能 JVM 参数 4. 如兼容使用更新的 Java 版本 5. 为整合包分配 4-8GB ## API 参考 ### Tauri 命令 **检测 Java 安装:** ```typescript const javas = await invoke('detect_java_installations'); // 返回: Array<{ path: string, version: string, major: number }> ``` **获取 Java 目录:** ```typescript const catalog = await invoke('get_java_catalog'); // 返回: { versions: Array, last_updated: number } ``` **下载 Java:** ```typescript await invoke('download_java', { version: '17.0.9+9', variant: 'jdk' // 或 'jre' }); ``` **取消 Java 下载:** ```typescript await invoke('cancel_java_download'); ``` **设置 Java 路径:** ```typescript await invoke('set_java_path', { path: '/path/to/java' }); ``` ### 事件 **下载进度:** ```typescript listen('java-download-progress', (event) => { const { percent, speed, eta } = event.payload; }); ``` **下载完成:** ```typescript listen('java-download-complete', (event) => { const { path, version } = event.payload; }); ``` ## 最佳实践 ### 对于玩家 1. **使用 Adoptium 构建版本** - 免费、高质量、维护良好 2. **Java 与 Minecraft 版本匹配** - 检查版本要求 3. **不要过度分配内存** - 为操作系统留出 RAM 4. **保持 Java 更新** - 安全性和性能 5. **使用 64 位 Java** - 大内存所需 ### 对于开发者 1. **测试多个 Java 版本** - 确保兼容性 2. **记录 Java 要求** - 帮助用户 3. **处理缺少的 Java** - 优雅的后备方案 4. **启动前验证 Java 路径** 5. **提供清晰的错误** - 当 Java 错误时 ## 高级主题 ### 自定义 Java 安装 使用自定义 Java 安装: 1. 手动安装 Java 2. 记录安装路径 3. 在 DropOut 设置 → Java 中 4. 点击"自定义路径" 5. 浏览到 Java 可执行文件 6. 验证版本正确 ### 服务器用 Java 运行 Minecraft 服务器时: ```bash # 推荐的服务器 JVM 参数 -Xms4G -Xmx4G \ -XX:+UseG1GC \ -XX:+ParallelRefProcEnabled \ -XX:MaxGCPauseMillis=200 \ -XX:+UnlockExperimentalVMOptions \ -XX:+DisableExplicitGC \ -XX:G1NewSizePercent=30 \ -XX:G1MaxNewSizePercent=40 \ -XX:G1HeapRegionSize=8M \ -XX:G1ReservePercent=20 \ -XX:G1HeapWastePercent=5 \ -XX:G1MixedGCCountTarget=4 \ -XX:InitiatingHeapOccupancyPercent=15 \ -XX:G1MixedGCLiveThresholdPercent=90 \ -XX:G1RSetUpdatingPauseTimePercent=5 \ -XX:SurvivorRatio=32 \ -XX:+PerfDisableSharedMem \ -XX:MaxTenuringThreshold=1 ``` ### GraalVM GraalVM 支持高级用户: 1. 从 graalvm.org 下载 GraalVM 2. 手动安装 3. 作为自定义 Java 添加到 DropOut 4. 可能提高性能 5. 使用前彻底测试