Skip to main content

full_search

Function full_search 

Source
pub fn full_search() -> Result<Vec<JavaInfo>, JavaError>
Expand description

Performs a comprehensive, multi-strategy scan for Java installations.

This is the most thorough search method. It checks $JAVA_HOME first, then applies every available discovery strategy for the current platform:

Windows: Registry (HKLM + HKCU for JavaSoft, Azul, BellSoft, Temurin, Corretto, GraalVM) → Keyword BFS on all drives → Microsoft Store → where java → Chocolatey → Scoop → JetBrains IDE-bundled JDK.

Linux: /usr/lib/jvm/usr/java/opt/usr/local → SDKMAN → JBang → asdf-vm → JetBrains IDE-bundled JDK → Minecraft runtime.

macOS: /Library/Java/JavaVirtualMachines/usr/libexec/java_home → SDKMAN → JBang → asdf-vm → Homebrew → JetBrains IDE-bundled JDK → Minecraft runtime.

Results are automatically deduplicated — when both a JDK and its bundled JRE are discovered, only the JDK-level entry is kept.

§Returns

A Vec<JavaInfo> for every valid Java installation found.

§Errors

Returns JavaError::IoError if file-system operations fail. Individual unreadable paths are skipped silently.

§Example

use java_manager::full_search;

let javas = full_search()?;
for java in &javas {
    println!("{:25} {}", java.name, java.version);
}