Package net.dryuf.onejarloader
Class OneJarLoader
java.lang.Object
java.lang.ClassLoader
net.dryuf.onejarloader.OneJarLoader
The OneJarLoader implements ClassLoader which extracts the nested jar files and then allows loading classes and
resources from them.
Either top level directory entries are scanned as dependencies or jar top level entries, including nested jars.
The ClassLoader supports native library with pattern os.name/os.arch/the-lib.ext and the-lib.ext
This code was written with Apache license to allow repackaging it together with commercial software.
Typical usage is as follows:
public class JarMyApplication
{
public static void main(String[] args)
{
OneJarLoader cl = new OneJarLoader();
cl.invokeMain(JarMyApplication.class.getName() + ".MyApplication", args);
}
}
VM parameters to configure logging:
-DOneJarLoader.{Jar,Class,Native,Resource}.level={Level}
Supported values are OFF, ERROR, WARN, INFO, DEBUG (default is ERROR)
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConstructor with system class loader as a parent class loader.OneJarLoader(ClassLoader parent) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected Class<?> protected StringfindLibrary(String name) protected URLfindResource(String name) findResources(String name) <R> RinvokeCallable(Callable<R> callable) voidinvokeMain(String className, String[] args) Invokes main method on a class loaded with this classloader.<R> RinvokeStatic(String className, String method, Class<?>[] signature, Object[] args) Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
Field Details
-
SYSPROP_LOGGER_PREFIX
VM parameter prefix to configure logging. Full is OneJarLoader.CATEGORY.level=LEVEL- See Also:
-
-
Constructor Details
-
OneJarLoader
public OneJarLoader()Constructor with system class loader as a parent class loader. -
OneJarLoader
Constructor.- Parameters:
parent- class loader parent.
-
-
Method Details
-
invokeMain
Invokes main method on a class loaded with this classloader.- Parameters:
className- class name to executeargs- program parameters- Throws:
Exception- when an error occurs.
-
invokeStatic
public <R> R invokeStatic(String className, String method, Class<?>[] signature, Object[] args) throws Exception - Throws:
Exception
-
invokeCallable
- Throws:
Exception
-
findResources
- Overrides:
findResourcesin classClassLoader- Throws:
IOException
-
findResource
- Overrides:
findResourcein classClassLoader
-
findLibrary
- Overrides:
findLibraryin classClassLoader
-
findClass
- Overrides:
findClassin classClassLoader- Throws:
ClassNotFoundException
-