@@ -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