88import java .util .ArrayList ;
99import java .util .Collection ;
1010import java .util .List ;
11- import java .util .Objects ;
1211import java .util .stream .Collectors ;
1312
1413import net .minecraftforge .java_provisioner .api .JavaInstall ;
1514import net .minecraftforge .java_provisioner .api .JavaProvisionerException ;
1615import net .minecraftforge .util .os .OS ;
17- import org .jetbrains .annotations .Nullable ;
1816
1917/*
2018 * Attempts to find the java install from specific folders.
@@ -24,6 +22,8 @@ final class JavaDirectoryLocator extends JavaHomeLocator {
2422 private final Collection <File > paths ;
2523
2624 private static Collection <File > guesses () {
25+ File userHome = new File (System .getProperty ("user.home" ));
26+
2727 Collection <File > ret = new ArrayList <>();
2828 if (OS .current () == OS .WINDOWS ) { // Windows
2929 for (File root : File .listRoots ()) {
@@ -44,12 +44,29 @@ private static Collection<File> guesses() {
4444 ret .add (new File ("/opt/jdks" ));
4545 }
4646
47+ // IntelliJ
48+ ret .add (new File (userHome , OS .current () == OS .MACOS ? "/Library/Java/JavaVirtualMachines" : ".jdks" ));
49+
50+ // JABBA
51+ ret .add (new File (userHome , ".jabba/jdks" ));
52+ String JABBA_HOME = System .getenv ("JABBA_HOME" );
53+ if (JABBA_HOME != null )
54+ ret .add (new File (new File (JABBA_HOME ), "jdks" ));
55+
56+ // SDKMan
57+ ret .add (new File (userHome , ".sdkman/candidates/java" ));
58+
59+ // ASDF
60+ ret .add (new File (userHome , ".asdf/installs/java" ));
61+ String ASDF_DATA_DIR = System .getenv ("ASDF_DATA_DIR" );
62+ if (ASDF_DATA_DIR != null )
63+ ret .add (new File (new File (ASDF_DATA_DIR ), "installs/java" ));
64+
4765 ret .removeIf (f -> !f .exists () || !f .isDirectory ());
4866
4967 return ret ;
5068 }
5169
52-
5370 public JavaDirectoryLocator () {
5471 this (guesses ());
5572 }
0 commit comments