aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/docs/content/zh/features/java.mdx
blob: bdc3c15147eca0ad8f81a5e7032341be7055f2bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
---
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/<version>/` 目录
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<JavaVersion>, 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. 使用前彻底测试