diff options
| author | 2026-01-19 11:06:38 +0800 | |
|---|---|---|
| committer | 2026-01-19 11:06:38 +0800 | |
| commit | f5560d7e8abe4a41c5f959cb6eb888f6aef6ca65 (patch) | |
| tree | f3675bdb552a79ddb4601ccf2f5ddd81eb47c9fb /src-tauri/src/core/java.rs | |
| parent | ee767338d6db510ef15d6b8cc11f6fb9a6215a43 (diff) | |
| parent | bdff2175a8470accdab030b3931406495c56074d (diff) | |
| download | DropOut-f5560d7e8abe4a41c5f959cb6eb888f6aef6ca65.tar.gz DropOut-f5560d7e8abe4a41c5f959cb6eb888f6aef6ca65.zip | |
Merge branch 'main' into chore/migrate-repository
Diffstat (limited to 'src-tauri/src/core/java.rs')
| -rw-r--r-- | src-tauri/src/core/java.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src-tauri/src/core/java.rs b/src-tauri/src/core/java.rs index 0c7769b..2e3c8a7 100644 --- a/src-tauri/src/core/java.rs +++ b/src-tauri/src/core/java.rs @@ -850,8 +850,24 @@ fn parse_version_string(output: &str) -> Option<String> { /// Parse version for comparison (returns major version number) fn parse_java_version(version: &str) -> u32 { - // Handle both old format (1.8.0_xxx) and new format (11.0.x, 17.0.x) - let parts: Vec<&str> = version.split('.').collect(); + // Handle various formats: + // - Old format: 1.8.0_xxx (Java 8 with update) + // - New format: 17.0.1, 11.0.5+10 (Java 11+) + // - Format with build: 21.0.3+13-Ubuntu-0ubuntu0.24.04.1 + // - Format with underscores: 1.8.0_411 + + // First, strip build metadata (everything after '+') + let version_only = version.split('+').next().unwrap_or(version); + + // Remove trailing junk (like "-Ubuntu-0ubuntu0.24.04.1") + let version_only = version_only.split('-').next().unwrap_or(version_only); + + // Replace underscores with dots (1.8.0_411 -> 1.8.0.411) + let normalized = version_only.replace('_', "."); + + // Split by dots + let parts: Vec<&str> = normalized.split('.').collect(); + if let Some(first) = parts.first() { if *first == "1" { // Old format: 1.8.0 -> major is 8 |