A classloader framework for container developers who need more than Java's built-in hierarchy.
Classworlds replaces the strict parent-child classloader tree with a pool of realms that can import specific packages from each other — a directed graph rather than a hierarchy. That is how Maven keeps a plugin's dependencies from colliding with its own, and how it loads plugins in isolation from one another.
It also ships a launcher that builds
the realms from a configuration file and invokes an application's main method in the right one. Maven's
own startup scripts use it.
Maintained, conservatively. Maven's startup depends on this, so changes are deliberate and public API is kept compatible.
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-classworlds</artifactId>
<version>2.12.0</version>
</dependency>Check the badge above for the current version.
Java 8 or later.
This project maintains a legacy compatibility layer in the org.codehaus.classworlds package.
This package cannot be removed without coordinating with the Eclipse Sisu and Apache Maven teams.
The compiled bytecode of org.eclipse.sisu:org.eclipse.sisu.plexus directly references
org.codehaus.classworlds.ClassRealm, ClassRealmAdapter, and ClassRealmReverseAdapter.
Removing this package causes ClassNotFoundException at runtime for any application using Sisu
(which includes all Maven 3+ builds).
PR #141 removed this package and had to be reverted immediately (see commit 223416e).
New code should use the org.codehaus.plexus.classworlds package.
See COMPATIBILITY.md for the full picture, including what Sisu references
and what is required before any future removal can be considered.
- Project site — including API usage and the launcher
- Javadoc
- Release notes
See CONTRIBUTING.md. In short:
mvn verify builds, and run mvn spotless:apply before pushing or CI will fail on formatting.
Please report security vulnerabilities privately — see SECURITY.md, not a public issue.