Skip to content

Commit c73de59

Browse files
authored
Duplicate mise's logic for finding Java installations (#538)
1 parent 9e1b75a commit c73de59

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/DetectVMInstallationsJob.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ private Collection<File> computeCandidateVMs(StandardVMType standardType) {
136136
rootDirectories.add(new File("/usr/lib/jvm")); //$NON-NLS-1$
137137
}
138138
rootDirectories.add(new File(System.getProperty("user.home"), ".sdkman/candidates/java")); //$NON-NLS-1$ //$NON-NLS-2$
139-
rootDirectories.add(new File(System.getProperty("user.home"), ".local/share/mise/installs/java")); //$NON-NLS-1$ //$NON-NLS-2$
139+
rootDirectories.add(new File(miseDataDir(), "installs/java")); //$NON-NLS-1$
140140

141141
Set<File> directories = rootDirectories.stream().filter(File::isDirectory)
142142
.map(dir -> dir.listFiles(File::isDirectory))
@@ -180,6 +180,26 @@ private void computeWindowsCandidates(Collection<File> rootDirectories) {
180180
.collect(Collectors.toList()));
181181
}
182182

183+
private static File miseDataDir() {
184+
String miseDataDir = System.getenv("MISE_DATA_DIR"); //$NON-NLS-1$
185+
return miseDataDir != null ? new File(miseDataDir) : new File(xdgDataHome(), "mise"); //$NON-NLS-1$
186+
}
187+
188+
private static File xdgDataHome() {
189+
String xdgDataHome = System.getenv("XDG_DATA_HOME"); //$NON-NLS-1$
190+
if (Platform.OS_WIN32.equals(Platform.getOS())) {
191+
if (xdgDataHome == null) {
192+
xdgDataHome = System.getenv("LOCALAPPDATA"); //$NON-NLS-1$
193+
}
194+
if (xdgDataHome == null) {
195+
return new File(System.getProperty("user.home"), "AppData/Local"); //$NON-NLS-1$ //$NON-NLS-2$
196+
}
197+
} else if (xdgDataHome == null) {
198+
return new File(System.getProperty("user.home"), ".local/share"); //$NON-NLS-1$ //$NON-NLS-2$
199+
}
200+
return new File(xdgDataHome);
201+
}
202+
183203
private static Set<File> knownVMs() {
184204
return Stream.of(JavaRuntime.getVMInstallTypes())
185205
.map(IVMInstallType::getVMInstalls)

0 commit comments

Comments
 (0)