开发者

Replacement System Classloader for Classes In Jars containing Jars

So far, the examples I have seen for custom ClassLoaders involve subclassing the URLClassLoader, and using that specific instance to load classes in resources.

I have tried in vain to look for alternative methods to replace the SystemClassLoader, so that my ClassLoader can be consult开发者_运维问答ed for classes not located in the classpath.

I tried Thread.currentThread().setContextClassLoader, but it doesn't seem to work.

Is it even possible?


Though this is an old question, there is indeed a way to replace the system ClassLoader. You might get more than you bargained for, however, with reflection.

        Field scl = ClassLoader.class.getDeclaredField("scl"); // Get system class loader
        scl.setAccessible(true); // Set accessible
        scl.set(null, new YourClassLoader()); // Update it to your class loader

This should work on the Oracle JVM.


Run JVM with java.system.class.loader property:

java -Djava.system.class.loader=myClassLoader myApplication
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜