-
Notifications
You must be signed in to change notification settings - Fork 53
io microsphere util ServiceLoaderUtils
Type: Class | Module: microsphere-java-core | Package: io.microsphere.util | Since: 1.0.0
Source:
microsphere-java-core/src/main/java/io/microsphere/util/ServiceLoaderUtils.java
Utility class for loading and managing service providers via ServiceLoader, with support for caching,
prioritization, and ClassLoader hierarchy traversal.
ServiceLoaderUtils provides methods to load all implementations of a service type, retrieve the first or last
implementation based on declaration order or priority, and return them as either a list or an array. It supports custom
class loaders and optional caching of loaded services.
- Load services using the context class loader or a specified class loader.
- Supports caching of loaded services (configurable).
- Sorts services by priority if they implement the `io.microsphere.lang.Prioritized` interface.
- Returns read-only lists or arrays of service instances.
`List services = ServiceLoaderUtils.loadServicesList(MyService.class);
for (MyService service : services) {
service.execute();
`
}
`MyService service = ServiceLoaderUtils.loadFirstService(MyService.class); service.initialize(); `
`MyService service = ServiceLoaderUtils.loadLastService(MyService.class); service.shutdown(); `
`ClassLoader cl = MyClassLoader.getInstance(); MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, cl); `
`List services = ServiceLoaderUtils.loadServicesList(MyService.class, false); `
public abstract class ServiceLoaderUtils implements UtilsAuthor: Mercy
-
Introduced in:
1.0.0 -
Current Project Version:
0.3.6-SNAPSHOT
This component is tested and compatible with the following Java versions:
| Java Version | Status |
|---|---|
| Java 8 | ✅ Compatible |
| Java 11 | ✅ Compatible |
| Java 17 | ✅ Compatible |
| Java 21 | ✅ Compatible |
| Java 25 | ✅ Compatible |
List<MyService> services = ServiceLoaderUtils.loadServicesList(MyService.class);
for (MyService service : services) {
service.execute();
}MyService service = ServiceLoaderUtils.loadFirstService(MyService.class);
service.initialize();MyService service = ServiceLoaderUtils.loadLastService(MyService.class);
service.shutdown();ClassLoader cl = MyClassLoader.getInstance();
MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, cl);List<MyService> services = ServiceLoaderUtils.loadServicesList(MyService.class, false);Set<Class<MyService>> classes = ServiceLoaderUtils.getServiceClasses(MyService.class);
for (Class<MyService> clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
}// Fail fast if a class cannot be loaded or is not assignable
Set<Class<MyService>> classes = ServiceLoaderUtils.getServiceClasses(MyService.class, true);
for (Class<MyService> clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
}
// Lenient mode: skip invalid classes
Set<Class<MyService>> lenientClasses = ServiceLoaderUtils.getServiceClasses(MyService.class, false);ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Set<Class<MyService>> classes = ServiceLoaderUtils.getServiceClasses(MyService.class, classLoader);
for (Class<MyService> clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// Fail fast if a class cannot be loaded or is not assignable
Set<Class<MyService>> classes = ServiceLoaderUtils.getServiceClasses(MyService.class, classLoader, true);
for (Class<MyService> clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
}
// Lenient mode: skip invalid classes
Set<Class<MyService>> lenientClasses = ServiceLoaderUtils.getServiceClasses(MyService.class, classLoader, false);Set<String> classNames = ServiceLoaderUtils.getServiceClassNames(MyService.class);
for (String className : classNames) {
System.out.println("Found service implementation: " + className);
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Set<String> classNames = ServiceLoaderUtils.getServiceClassNames(MyService.class, classLoader);
for (String className : classNames) {
System.out.println("Found service implementation: " + className);
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Set<URL> resources = ServiceLoaderUtils.getServiceResources(MyService.class, classLoader);
for (URL url : resources) {
System.out.println("Found service config at: " + url);
}List<MyService> services = ServiceLoaderUtils.loadServicesList(MyService.class);
for (MyService service : services) {
service.execute();
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
List<MyService> services = ServiceLoaderUtils.loadServicesList(MyService.class, classLoader);
for (MyService service : services) {
service.execute();
}List<MyService> services = ServiceLoaderUtils.loadServicesList(MyService.class, true);
for (MyService service : services) {
service.execute();
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
List<MyService> services = ServiceLoaderUtils.loadServicesList(MyService.class, classLoader, true);
for (MyService service : services) {
service.execute();
}MyService[] services = ServiceLoaderUtils.loadServices(MyService.class);
for (MyService service : services) {
service.execute();
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, classLoader);
for (MyService service : services) {
service.execute();
}MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, true);
for (MyService service : services) {
service.initialize();
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, classLoader, true);
for (MyService service : services) {
service.execute();
}MyService service = ServiceLoaderUtils.loadFirstService(MyService.class);
if (service != null) {
service.execute();
}MyService service = ServiceLoaderUtils.loadFirstService(MyService.class, true);
if (service != null) {
service.initialize();
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService service = ServiceLoaderUtils.loadFirstService(MyService.class, classLoader);
if (service != null) {
service.execute();
}ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService service = ServiceLoaderUtils.loadFirstService(MyService.class, classLoader, true);
if (service != null) {
service.initialize();
}MyService service = ServiceLoaderUtils.loadLastService(MyService.class);
if (service != null) {
service.execute();
}Add the following dependency to your pom.xml:
<dependency>
<groupId>io.github.microsphere-projects</groupId>
<artifactId>microsphere-java-core</artifactId>
<version>${microsphere-java.version}</version>
</dependency>Tip: Use the BOM (
microsphere-java-dependencies) for consistent version management. See the Getting Started guide.
import io.microsphere.util.ServiceLoaderUtils;| Method | Description |
|---|---|
getServiceClasses |
The default value of the #SERVICE_LOADER_CACHED property : "false"
|
getServiceClasses |
Retrieves the implementation classes of all service providers for the specified service type using the context class ... |
getServiceClasses |
Retrieves the implementation classes of all service providers for the specified service type using the provided `Clas... |
getServiceClasses |
Retrieves the implementation classes of all service providers for the specified service type. |
getServiceClassNames |
Retrieves the class names of all service providers for the specified service type using the context class loader. |
getServiceClassNames |
Retrieves the class names of all service providers for the specified service type. |
getServiceResoources |
Retrieves the URLs of the service provider configuration files for the specified service type. |
loadServicesList |
Loads all implementation instances of the specified ServiceLoader service type using the context class loader. |
loadServicesList |
Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader. |
loadServicesList |
Loads all implementation instances of the specified ServiceLoader service type using the context class loader, |
loadServicesList |
Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader, |
loadServices |
Loads all implementation instances of the specified ServiceLoader service type using the context class loader. |
loadServices |
Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader. |
loadServices |
Loads all implementation instances of the specified ServiceLoader service type using the context class loader, |
loadServices |
Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader, |
loadFirstService |
Loads the first instance of the specified ServiceLoader service type using the context class loader. |
loadFirstService |
Loads the first instance of the specified ServiceLoader service type using the context class loader, |
loadFirstService |
Loads the first instance of the specified ServiceLoader service type using the provided ClassLoader. |
loadFirstService |
Loads the first instance of the specified ServiceLoader service type using the provided ClassLoader, |
loadLastService |
Loads the last instance of the specified ServiceLoader service type using the context class loader. |
public static <T> Set<Class<T>> getServiceClasses(Class<T> serviceType)The default value of the #SERVICE_LOADER_CACHED property : "false"
/
public static final String DEFAULT_SERVICE_LOADER_CACHED_PROPERTY_VALUE = "false";
/**
The name of the #SERVICE_LOADER_CACHED property : "microsphere.service-loader.cached"
/
public static final String SERVICE_LOADER_CACHED_PROPERTY_NAME = MICROSPHERE_PROPERTY_NAME_PREFIX + "service-loader.cached";
/** The location of service provider configuration files : "META-INF/services/".
public static <T> Set<Class<T>> getServiceClasses(Class<T> serviceType, boolean failFast)Retrieves the implementation classes of all service providers for the specified service type using the context class loader.
This method searches for service provider configuration files located at
META-INF/services/ using the context class loader associated with the service type.
It loads the classes defined in these configuration files and verifies their assignability
to the service type.
`// Fail fast if a class cannot be loaded or is not assignable
Set> classes = ServiceLoaderUtils.getServiceClasses(MyService.class, true);
for (Class clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
`
// Lenient mode: skip invalid classes
Set> lenientClasses = ServiceLoaderUtils.getServiceClasses(MyService.class, false);
}
public static <T> Set<Class<T>> getServiceClasses(Class<T> serviceType, @Nullable ClassLoader classLoader)Retrieves the implementation classes of all service providers for the specified service type using the provided ClassLoader.
This method searches for service provider configuration files located at
META-INF/services/ using the provided ClassLoader.
It loads the classes defined in these configuration files and verifies their assignability
to the service type. This method uses the default fail-fast behavior (true).
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Set> classes = ServiceLoaderUtils.getServiceClasses(MyService.class, classLoader);
for (Class clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
`
}
public static <T> Set<Class<T>> getServiceClasses(Class<T> serviceType, @Nullable ClassLoader classLoader, boolean failFast)Retrieves the implementation classes of all service providers for the specified service type.
This method searches for service provider configuration files located at
META-INF/services/ using the provided ClassLoader.
It loads the classes defined in these configuration files and verifies their assignability
to the service type.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// Fail fast if a class cannot be loaded or is not assignable
Set> classes = ServiceLoaderUtils.getServiceClasses(MyService.class, classLoader, true);
for (Class clazz : classes) {
System.out.println("Found service implementation class: " + clazz.getName());
`
// Lenient mode: skip invalid classes
Set> lenientClasses = ServiceLoaderUtils.getServiceClasses(MyService.class, classLoader, false);
}
public static Set<String> getServiceClassNames(Class<?> serviceType)Retrieves the class names of all service providers for the specified service type using the context class loader.
This method searches for service provider configuration files located at
META-INF/services/ using the context class loader associated with the service type.
It reads the fully qualified class names defined in these configuration files.
`Set classNames = ServiceLoaderUtils.getServiceClassNames(MyService.class);
for (String className : classNames) {
System.out.println("Found service implementation: " + className);
`
}
public static Set<String> getServiceClassNames(Class<?> serviceType, @Nullable ClassLoader classLoader)Retrieves the class names of all service providers for the specified service type.
This method searches for service provider configuration files located at
META-INF/services/ using the provided ClassLoader.
It reads the fully qualified class names defined in these configuration files.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Set classNames = ServiceLoaderUtils.getServiceClassNames(MyService.class, classLoader);
for (String className : classNames) {
System.out.println("Found service implementation: " + className);
`
}
public static Set<URL> getServiceResoources(Class<?> serviceType, @Nullable ClassLoader classLoader)Retrieves the URLs of the service provider configuration files for the specified service type.
This method searches for configuration files located at META-INF/services/
using the provided ClassLoader. It traverses the class loader hierarchy to find all
matching resources.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Set resources = ServiceLoaderUtils.getServiceResources(MyService.class, classLoader);
for (URL url : resources) {
System.out.println("Found service config at: " + url);
`
}
public static <S> List<S> loadServicesList(Class<S> serviceType)Loads all implementation instances of the specified ServiceLoader service type using the context class loader.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned list contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`List services = ServiceLoaderUtils.loadServicesList(MyService.class);
for (MyService service : services) {
service.execute();
`
}
public static <S> List<S> loadServicesList(Class<S> serviceType, @Nullable ClassLoader classLoader)Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned list contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
List services = ServiceLoaderUtils.loadServicesList(MyService.class, classLoader);
for (MyService service : services) {
service.execute();
`
}
public static <S> List<S> loadServicesList(Class<S> serviceType, boolean cached)Loads all implementation instances of the specified ServiceLoader service type using the context class loader,
with an option to enable or disable caching of the loaded services.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned list contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`List services = ServiceLoaderUtils.loadServicesList(MyService.class, true);
for (MyService service : services) {
service.execute();
`
}
public static <S> List<S> loadServicesList(Class<S> serviceType, @Nullable ClassLoader classLoader, boolean cached)Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader,
with an option to enable or disable caching of the loaded services.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned list contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
List services = ServiceLoaderUtils.loadServicesList(MyService.class, classLoader, true);
for (MyService service : services) {
service.execute();
`
}
public static <S> S[] loadServices(Class<S> serviceType)Loads all implementation instances of the specified ServiceLoader service type using the context class loader.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned array contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`MyService[] services = ServiceLoaderUtils.loadServices(MyService.class);
for (MyService service : services) {
service.execute();
`
}
public static <S> S[] loadServices(Class<S> serviceType, @Nullable ClassLoader classLoader)Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned array contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, classLoader);
for (MyService service : services) {
service.execute();
`
}
public static <S> S[] loadServices(Class<S> serviceType, boolean cached)Loads all implementation instances of the specified ServiceLoader service type using the context class loader,
with an option to enable or disable caching of the loaded services.
This method utilizes the context class loader associated with the provided service type to load the service configuration file located at
/META-INF/services/. The returned array contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, true);
for (MyService service : services) {
service.initialize();
`
}
public static <S> S[] loadServices(Class<S> serviceType, @Nullable ClassLoader classLoader, boolean cached)Loads all implementation instances of the specified ServiceLoader service type using the provided ClassLoader,
with an option to enable or disable caching of the loaded services.
This method traverses the hierarchy of ClassLoader to load the service configuration file located at
/META-INF/services/. The returned array contains all discovered implementations in the order they were found,
sorted by their priority if they implement the io.microsphere.lang.Prioritized interface.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService[] services = ServiceLoaderUtils.loadServices(MyService.class, classLoader, true);
for (MyService service : services) {
service.execute();
`
}
public static <S> S loadFirstService(Class<S> serviceType)Loads the first instance of the specified ServiceLoader service type using the context class loader.
This method retrieves the list of service implementations using
#loadServicesList(Class, ClassLoader), and returns the first element from the list.
The order of service instances is determined by their declaration in the configuration files,
and services implementing the io.microsphere.lang.Prioritized interface are sorted by priority.
`MyService service = ServiceLoaderUtils.loadFirstService(MyService.class);
if (service != null) {
service.execute();
`
}
public static <S> S loadFirstService(Class<S> serviceType, boolean cached)Loads the first instance of the specified ServiceLoader service type using the context class loader,
with an option to enable or disable caching of the loaded services.
This method retrieves the list of service implementations using
#loadServicesList(Class, ClassLoader, boolean), and returns the first element from the list.
The order of service instances is determined by their declaration in the configuration files,
and services implementing the io.microsphere.lang.Prioritized interface are sorted by priority.
Design Purpose : Using the hierarchy of ClassLoader, each level of ClassLoader will be able to access the configuration files under its class path
/META-INF/services/serviceType.
Then, override the first implementation class of the configuration file under the class path of ClassLoader,
thereby providing a mechanism for overriding the implementation class.
`MyService service = ServiceLoaderUtils.loadFirstService(MyService.class, true);
if (service != null) {
service.initialize();
`
}
public static <S> S loadFirstService(Class<S> serviceType, @Nullable ClassLoader classLoader)Loads the first instance of the specified ServiceLoader service type using the provided ClassLoader.
This method retrieves the list of service implementations using
#loadServicesList(Class, ClassLoader), and returns the first element from the list.
The order of service instances is determined by their declaration in the configuration files,
and services implementing the io.microsphere.lang.Prioritized interface are sorted by priority.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService service = ServiceLoaderUtils.loadFirstService(MyService.class, classLoader);
if (service != null) {
service.execute();
`
}
public static <S> S loadFirstService(Class<S> serviceType, @Nullable ClassLoader classLoader, boolean cached)Loads the first instance of the specified ServiceLoader service type using the provided ClassLoader,
with an option to enable or disable caching of the loaded services.
This method retrieves the list of service implementations using
#loadServicesList(Class, ClassLoader, boolean), and returns the first element from the list.
The order of service instances is determined by their declaration in the configuration files,
and services implementing the io.microsphere.lang.Prioritized interface are sorted by priority.
`ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
MyService service = ServiceLoaderUtils.loadFirstService(MyService.class, classLoader, true);
if (service != null) {
service.initialize();
`
}
public static <S> S loadLastService(Class<S> serviceType)Loads the last instance of the specified ServiceLoader service type using the context class loader.
This method retrieves the list of service implementations using
#loadServicesList(Class, ClassLoader), and returns the last element from the list.
The order of service instances is determined by their declaration in the configuration files,
and services implementing the io.microsphere.lang.Prioritized interface are sorted by priority.
`MyService service = ServiceLoaderUtils.loadLastService(MyService.class);
if (service != null) {
service.execute();
`
}
ServiceLoader
This documentation was auto-generated from the source code of microsphere-java.
annotation-processor
- ConfigurationPropertyAnnotationProcessor
- ConfigurationPropertyJSONElementVisitor
- FilerProcessor
- ResourceProcessor
java-annotations
java-core
- ACLLoggerFactory
- AbstractArtifactResourceResolver
- AbstractConverter
- AbstractDeque
- AbstractEventDispatcher
- AbstractLogger
- AbstractURLClassPathHandle
- AccessibleObjectUtils
- AdditionalMetadataResourceConfigurationPropertyLoader
- AnnotationUtils
- ArchiveFileArtifactResourceResolver
- ArrayEnumeration
- ArrayStack
- ArrayUtils
- Artifact
- ArtifactDetector
- ArtifactResourceResolver
- Assert
- BannedArtifactClassLoadingExecutor
- BaseUtils
- BeanMetadata
- BeanProperty
- BeanUtils
- ByteArrayToObjectConverter
- CharSequenceComparator
- CharSequenceUtils
- CharsetUtils
- ClassDataRepository
- ClassDefinition
- ClassFileJarEntryFilter
- ClassFilter
- ClassLoaderUtils
- ClassPathResourceConfigurationPropertyLoader
- ClassPathUtils
- ClassUtils
- ClassicProcessIdResolver
- ClassicURLClassPathHandle
- CollectionUtils
- Compatible
- CompositeSubProtocolURLConnectionFactory
- CompositeURLStreamHandlerFactory
- ConditionalEventListener
- ConfigurationProperty
- ConfigurationPropertyGenerator
- ConfigurationPropertyLoader
- ConfigurationPropertyReader
- Configurer
- ConsoleURLConnection
- Constants
- ConstructorDefinition
- ConstructorUtils
- Converter
- Converters
- CustomizedThreadFactory
- DefaultConfigurationPropertyGenerator
- DefaultConfigurationPropertyReader
- DefaultDeserializer
- DefaultEntry
- DefaultSerializer
- DelegatingBlockingQueue
- DelegatingDeque
- DelegatingIterator
- DelegatingQueue
- DelegatingScheduledExecutorService
- DelegatingURLConnection
- DelegatingURLStreamHandlerFactory
- DelegatingWrapper
- Deprecation
- Deserializer
- Deserializers
- DirectEventDispatcher
- DirectoryFileFilter
- EmptyDeque
- EmptyIterable
- EmptyIterator
- EnumerationIteratorAdapter
- EnumerationUtils
- Event
- EventDispatcher
- EventListener
- ExceptionUtils
- ExecutableDefinition
- ExecutableUtils
- ExecutorUtils
- ExtendableProtocolURLStreamHandler
- FastByteArrayInputStream
- FastByteArrayOutputStream
- FieldDefinition
- FieldUtils
- FileChangedEvent
- FileChangedListener
- FileConstants
- FileExtensionFilter
- FileUtils
- FileWatchService
- Filter
- FilterOperator
- FilterUtils
- FormatUtils
- Functional
- GenericEvent
- GenericEventListener
- Handler
- Handler
- HierarchicalClassComparator
- IOFileFilter
- IOUtils
- ImmutableEntry
- IterableAdapter
- IterableUtils
- Iterators
- JDKLoggerFactory
- JSON
- JSONArray
- JSONException
- JSONObject
- JSONStringer
- JSONTokener
- JSONUtils
- JarEntryFilter
- JarUtils
- JavaType
- JmxUtils
- ListUtils
- Listenable
- Lists
- Logger
- LoggerFactory
- LoggingFileChangedListener
- MBeanAttribute
- MBeanAttributeInfoBuilder
- MBeanConstructorInfoBuilder
- MBeanDescribableBuilder
- MBeanExecutableInfoBuilder
- MBeanFeatureInfoBuilder
- MBeanInfoBuilder
- MBeanNotificationInfoBuilder
- MBeanOperationInfoBuilder
- MBeanParameterInfoBuilder
- ManagementUtils
- ManifestArtifactResourceResolver
- MapToPropertiesConverter
- MapUtils
- Maps
- MavenArtifact
- MavenArtifactResourceResolver
- MemberDefinition
- MemberUtils
- MetadataResourceConfigurationPropertyLoader
- MethodDefinition
- MethodHandleUtils
- MethodHandlesLookupUtils
- MethodUtils
- ModernProcessIdResolver
- ModernURLClassPathHandle
- Modifier
- MultiValueConverter
- MultipleType
- MutableInteger
- MutableURLStreamHandlerFactory
- NameFileFilter
- NoOpLogger
- NoOpLoggerFactory
- NoOpURLClassPathHandle
- NumberToByteConverter
- NumberToCharacterConverter
- NumberToDoubleConverter
- NumberToFloatConverter
- NumberToIntegerConverter
- NumberToLongConverter
- NumberToShortConverter
- NumberUtils
- ObjectToBooleanConverter
- ObjectToByteArrayConverter
- ObjectToByteConverter
- ObjectToCharacterConverter
- ObjectToDoubleConverter
- ObjectToFloatConverter
- ObjectToIntegerConverter
- ObjectToLongConverter
- ObjectToOptionalConverter
- ObjectToShortConverter
- ObjectToStringConverter
- ObjectUtils
- PackageNameClassFilter
- PackageNameClassNameFilter
- ParallelEventDispatcher
- ParameterizedTypeImpl
- PathConstants
- Predicates
- Prioritized
- PriorityComparator
- ProcessExecutor
- ProcessIdResolver
- ProcessManager
- PropertiesToStringConverter
- PropertiesUtils
- PropertyConstants
- PropertyResourceBundleControl
- PropertyResourceBundleUtils
- ProtocolConstants
- ProxyUtils
- QueueUtils
- ReadOnlyIterator
- ReflectionUtils
- ReflectiveConfigurationPropertyGenerator
- ReflectiveDefinition
- ResourceConstants
- ReversedDeque
- Scanner
- SecurityUtils
- SeparatorConstants
- Serializer
- Serializers
- ServiceLoaderURLStreamHandlerFactory
- ServiceLoaderUtils
- ServiceLoadingURLClassPathHandle
- SetUtils
- Sets
- Sfl4jLoggerFactory
- ShutdownHookCallbacksThread
- ShutdownHookUtils
- SimpleClassScanner
- SimpleFileScanner
- SimpleJarEntryScanner
- SingletonDeque
- SingletonEnumeration
- SingletonIterator
- StackTraceUtils
- StandardFileWatchService
- StandardURLStreamHandlerFactory
- StopWatch
- StreamArtifactResourceResolver
- Streams
- StringBuilderWriter
- StringConverter
- StringDeserializer
- StringSerializer
- StringToArrayConverter
- StringToBlockingDequeConverter
- StringToBlockingQueueConverter
- StringToBooleanConverter
- StringToByteConverter
- StringToCharArrayConverter
- StringToCharacterConverter
- StringToClassConverter
- StringToCollectionConverter
- StringToDequeConverter
- StringToDoubleConverter
- StringToDurationConverter
- StringToFloatConverter
- StringToInputStreamConverter
- StringToIntegerConverter
- StringToIterableConverter
- StringToListConverter
- StringToLongConverter
- StringToMultiValueConverter
- StringToNavigableSetConverter
- StringToQueueConverter
- StringToSetConverter
- StringToShortConverter
- StringToSortedSetConverter
- StringToStringConverter
- StringToTransferQueueConverter
- StringUtils
- SubProtocolURLConnectionFactory
- SymbolConstants
- SystemUtils
- ThrowableAction
- ThrowableBiConsumer
- ThrowableBiFunction
- ThrowableConsumer
- ThrowableFunction
- ThrowableSupplier
- ThrowableUtils
- TrueClassFilter
- TrueFileFilter
- TypeArgument
- TypeFinder
- TypeUtils
- URLClassPathHandle
- URLUtils
- UnmodifiableDeque
- UnmodifiableIterator
- UnmodifiableQueue
- Utils
- ValueHolder
- Version
- VersionUtils
- VirtualMachineProcessIdResolver
- Wrapper
- WrapperProcessor
java-test
- AbstractAnnotationProcessingTest
- Ancestor
- AnnotationProcessingTestProcessor
- ArrayTypeModel
- CollectionTypeModel
- Color
- CompilerInvocationInterceptor
- ConfigurationPropertyModel
- DefaultTestService
- GenericTestService
- MapTypeModel
- Model
- Parent
- PrimitiveTypeModel
- SimpleTypeModel
- StringArrayList
- TestAnnotation
- TestService
- TestServiceImpl
jdk-tools
lang-model