diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/CompileBatch.java b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/CompileBatch.java
index 2caba1c41..957646fec 100644
--- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/CompileBatch.java
+++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/CompileBatch.java
@@ -17,11 +17,11 @@
package com.itsaky.androidide.lsp.java.compiler;
-import static com.itsaky.androidide.config.JavacConfigProvider.PROP_ANDROIDIDE_JAVA_HOME;
-import static com.itsaky.androidide.config.JavacConfigProvider.disableModules;
-import static com.itsaky.androidide.config.JavacConfigProvider.enableModules;
-import static com.itsaky.androidide.config.JavacConfigProvider.setLatestSourceVersion;
-import static com.itsaky.androidide.config.JavacConfigProvider.setLatestSupportedSourceVersion;
+import static com.itsaky.androidide.javac.config.JavacConfigProvider.PROP_ANDROIDIDE_JAVA_HOME;
+import static com.itsaky.androidide.javac.config.JavacConfigProvider.disableModules;
+import static com.itsaky.androidide.javac.config.JavacConfigProvider.enableModules;
+import static com.itsaky.androidide.javac.config.JavacConfigProvider.setLatestSourceVersion;
+import static com.itsaky.androidide.javac.config.JavacConfigProvider.setLatestSupportedSourceVersion;
import static com.itsaky.androidide.utils.Environment.JAVA_HOME;
import androidx.annotation.NonNull;
diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/SourceFileManager.java b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/SourceFileManager.java
index 4ffc13121..3d75efd5a 100644
--- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/SourceFileManager.java
+++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/compiler/SourceFileManager.java
@@ -23,7 +23,7 @@ import static java.util.Collections.emptySet;
import androidx.annotation.NonNull;
import com.blankj.utilcode.util.CloseUtils;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
import com.itsaky.androidide.javac.services.fs.AndroidFsProviderImpl;
import com.itsaky.androidide.projects.api.AndroidModule;
import com.itsaky.androidide.projects.api.ModuleProject;
diff --git a/subprojects/java-compiler/src/main/java/com/itsaky/androidide/config/JavacConfigProvider.java b/subprojects/java-compiler/src/main/java/com/itsaky/androidide/javac/config/JavacConfigProvider.java
similarity index 76%
rename from subprojects/java-compiler/src/main/java/com/itsaky/androidide/config/JavacConfigProvider.java
rename to subprojects/java-compiler/src/main/java/com/itsaky/androidide/javac/config/JavacConfigProvider.java
index a8ca4ae13..9d8539df0 100644
--- a/subprojects/java-compiler/src/main/java/com/itsaky/androidide/config/JavacConfigProvider.java
+++ b/subprojects/java-compiler/src/main/java/com/itsaky/androidide/javac/config/JavacConfigProvider.java
@@ -1,4 +1,21 @@
-package com.itsaky.androidide.config;
+/*
+ * This file is part of AndroidIDE.
+ *
+ * AndroidIDE is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AndroidIDE is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with AndroidIDE. If not, see .
+ */
+
+package com.itsaky.androidide.javac.config;
import jdkx.lang.model.SourceVersion;
import java.lang.reflect.Field;
diff --git a/subprojects/java-compiler/src/main/java/javac/internal/jimage/ImageReaderFactory.java b/subprojects/java-compiler/src/main/java/javac/internal/jimage/ImageReaderFactory.java
index 03037b386..baa36bbb2 100644
--- a/subprojects/java-compiler/src/main/java/javac/internal/jimage/ImageReaderFactory.java
+++ b/subprojects/java-compiler/src/main/java/javac/internal/jimage/ImageReaderFactory.java
@@ -25,6 +25,8 @@
package javac.internal.jimage;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
+
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Path;
@@ -47,7 +49,7 @@ public class ImageReaderFactory {
private ImageReaderFactory() {}
// AndroidIDE changed: Allow overriding java home.
- private static final String JAVA_HOME = com.itsaky.androidide.config.JavacConfigProvider.getJavaHome();
+ private static final String JAVA_HOME = JavacConfigProvider.getJavaHome();
private static final Path BOOT_MODULES_JIMAGE =
Paths.get(JAVA_HOME, "lib", "modules");
diff --git a/subprojects/java-compiler/src/main/java/javac/internal/jrtfs/SystemImage.java b/subprojects/java-compiler/src/main/java/javac/internal/jrtfs/SystemImage.java
index 52f10f77f..a3ff94e62 100644
--- a/subprojects/java-compiler/src/main/java/javac/internal/jrtfs/SystemImage.java
+++ b/subprojects/java-compiler/src/main/java/javac/internal/jrtfs/SystemImage.java
@@ -37,7 +37,7 @@ import java.security.PrivilegedAction;
import javac.internal.jimage.ImageReader;
import javac.internal.jimage.ImageReader.Node;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
/**
* @implNote This class needs to maintain JDK 8 source compatibility.
diff --git a/subprojects/java-compiler/src/main/java/jdkx/lang/model/SourceVersion.java b/subprojects/java-compiler/src/main/java/jdkx/lang/model/SourceVersion.java
index bd1cca101..1e0e953ce 100644
--- a/subprojects/java-compiler/src/main/java/jdkx/lang/model/SourceVersion.java
+++ b/subprojects/java-compiler/src/main/java/jdkx/lang/model/SourceVersion.java
@@ -25,10 +25,7 @@
package jdkx.lang.model;
-import java.util.Collections;
-import java.util.Set;
-import java.util.HashSet;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
/**
* Source versions of the Java programming language.
diff --git a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/api/JavacTool.java b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/api/JavacTool.java
index cd9da5c20..bee0a96ee 100644
--- a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/api/JavacTool.java
+++ b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/api/JavacTool.java
@@ -40,7 +40,7 @@ import java.util.Set;
import jdkx.lang.model.SourceVersion;
import jdkx.tools.*;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
import openjdk.source.util.JavacTask;
import openjdk.tools.javac.file.JavacFileManager;
import openjdk.tools.javac.main.Arguments;
diff --git a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/code/Source.java b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/code/Source.java
index 1b3a34b35..d229d5872 100644
--- a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/code/Source.java
+++ b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/code/Source.java
@@ -30,7 +30,7 @@ import java.util.*;
import jdkx.lang.model.SourceVersion;
import static jdkx.lang.model.SourceVersion.*;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
import openjdk.tools.javac.jvm.Target;
import openjdk.tools.javac.resources.CompilerProperties.Errors;
import openjdk.tools.javac.resources.CompilerProperties.Fragments;
diff --git a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/JRTIndex.java b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/JRTIndex.java
index 43844ed0b..7ffb50839 100644
--- a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/JRTIndex.java
+++ b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/JRTIndex.java
@@ -47,7 +47,7 @@ import java.util.Set;
import jdkx.tools.FileObject;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
import com.itsaky.androidide.zipfs2.AndroidFsProvider;
import openjdk.tools.javac.file.RelativePath.RelativeDirectory;
import openjdk.tools.javac.util.Context;
diff --git a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/Locations.java b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/Locations.java
index 0fa6180ee..17cb0029e 100644
--- a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/Locations.java
+++ b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/file/Locations.java
@@ -77,7 +77,7 @@ import jdkx.tools.StandardJavaFileManager;
import jdkx.tools.StandardJavaFileManager.PathFactory;
import jdkx.tools.StandardLocation;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
import openjdk.tools.javac.code.Lint;
import openjdk.tools.javac.code.Lint.LintCategory;
diff --git a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/platform/JDKPlatformProvider.java b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/platform/JDKPlatformProvider.java
index 05d0ddacd..2666726d8 100644
--- a/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/platform/JDKPlatformProvider.java
+++ b/subprojects/jdk-compiler/src/main/java/openjdk/tools/javac/platform/JDKPlatformProvider.java
@@ -25,6 +25,8 @@
package openjdk.tools.javac.platform;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URI;
@@ -49,13 +51,11 @@ import java.util.Map.Entry;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.TreeSet;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import jdkx.annotation.processing.Processor;
import jdkx.tools.ForwardingJavaFileObject;
import jdkx.tools.JavaFileManager;
-import jdkx.tools.JavaFileManager.Location;
import jdkx.tools.JavaFileObject;
import jdkx.tools.JavaFileObject.Kind;
import jdkx.tools.StandardJavaFileManager;
@@ -395,7 +395,7 @@ public class JDKPlatformProvider implements PlatformProvider {
static Path findCtSym() {
// AndroidIDE changed: Allow overriding java home.
- String javaHome = com.itsaky.androidide.config.JavacConfigProvider.getJavaHome();
+ String javaHome = JavacConfigProvider.getJavaHome();
Path file = Paths.get(javaHome);
// file == ${jdk.home}
for (String name : symbolFileLocation)
diff --git a/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeprscan/Main.java b/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeprscan/Main.java
index dd6fd6687..ed5ae5991 100644
--- a/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeprscan/Main.java
+++ b/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeprscan/Main.java
@@ -62,14 +62,12 @@ import jdkx.tools.StandardJavaFileManager;
import jdkx.tools.StandardLocation;
import jdkx.tools.ToolProvider;
-import com.itsaky.androidide.config.JavacConfigProvider;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
import openjdk.tools.javac.file.JavacFileManager;
import openjdk.tools.javac.platform.JDKPlatformProvider;
import openjdk.tools.jdeprscan.scan.Scan;
-import static java.util.stream.Collectors.*;
-
import jdkx.lang.model.element.PackageElement;
import jdkx.lang.model.element.TypeElement;
diff --git a/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsConfiguration.java b/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsConfiguration.java
index af697916d..c6d50217c 100644
--- a/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsConfiguration.java
+++ b/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsConfiguration.java
@@ -28,6 +28,8 @@ package openjdk.tools.jdeps;
import static openjdk.tools.jdeps.Module.trace;
import static java.util.stream.Collectors.*;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
+
import openjdk.tools.classfile.Dependency;
import java.io.BufferedInputStream;
@@ -305,7 +307,7 @@ public class JdepsConfiguration implements AutoCloseable {
static class SystemModuleFinder implements ModuleFinder {
// AndroidIDE changed: Allow overriding java home.
- private static final String JAVA_HOME = com.itsaky.androidide.config.JavacConfigProvider.getJavaHome();
+ private static final String JAVA_HOME = JavacConfigProvider.getJavaHome();
private final FileSystem fileSystem;
private final Path root;
diff --git a/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsTask.java b/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsTask.java
index aecec196e..c9f73adc7 100644
--- a/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsTask.java
+++ b/subprojects/jdk-jdeps/src/main/java/openjdk/tools/jdeps/JdepsTask.java
@@ -30,6 +30,8 @@ import static openjdk.tools.jdeps.Analyzer.Type.*;
import static openjdk.tools.jdeps.JdepsWriter.*;
import static java.util.stream.Collectors.*;
+import com.itsaky.androidide.javac.config.JavacConfigProvider;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.module.ResolutionException;
@@ -1244,7 +1246,7 @@ class JdepsTask {
Pattern includePattern;
boolean inverse = false;
boolean compileTimeView = false;
- String systemModulePath = com.itsaky.androidide.config.JavacConfigProvider.getJavaHome();
+ String systemModulePath = JavacConfigProvider.getJavaHome();
String upgradeModulePath;
String modulePath;
Set rootModules = new HashSet<>();