[英]javassist throws ClassNotFoundException when loading external classes from jar
[英]Loading external Classes with external dependencies - URLClassLoader ClassNotFoundException
我正在通過external.JAR文件並通過URLClassLoader加載類,只要外部類不引用另一個JAR,該類就可以工作。 如果我這樣做,將產生ClassNotFoundException。
作為解決方法,我將其他第二層JAR添加為依賴項,但我想在運行時動態加載它們。
問題:如何加載引用其他外部類的外部類? 或如何以正確的順序加載外部JAR文件和類,以免出現異常?
我應該捕獲異常,然后“首先”加載尚未加載的類嗎?
您實際上可以使用子一流的加載器加載它們。 該主jar及其所有依賴項將屬於該類加載器,並且可以在需要時被引用和丟棄。
主類加載器-> ChildFirstClassLoader->加載jar和從屬jar
半示例
File file = new File("c:\\free-universe-games-llc\\app.jar");
URL url = file.toURI().toURL();
ChildFirstClassLoader urlClassLoader = new ChildFirstClassLoader(new URL[]{url}, SomeClassLoader.class.getClassLoader());
Class<?> aClass = urlClassLoader.loadClass("com.freeuniversegames.app.App.class");
Object o = aClass.newInstance();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.