Я пытаюсь загрузить внешние библиотеки, когда создаю другой jar-файл, который использует эти библиотеки (в результате чего ASM выдает исключение ClassNotFoundException, поскольку они не загружены.)
Я не слишком уверенкак это сделать, так как я не смог найти никакой помощи в Интернете по этому вопросу.
Мой код для загрузки библиотек можно увидеть ниже:
for (String path : visitor.currentBlock()) {
if (!path.endsWith(".jar")) {
continue;
}
ClassLoader classLoader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()}, getClass().getClassLoader());
JarInputStream jis = new JarInputStream(new FileInputStream(path));
JarEntry entry;
while ((entry = jis.getNextJarEntry()) != null) {
try {
if (entry.getName().endsWith(".class")) {
classLoader.loadClass(entry.getName());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
jis.close();
}
Каждый класс выбрасывает этоисключение:
java.lang.ClassNotFoundException: XXX
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
at java.base/java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:890)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at enterprises.yosemite.obfuscator.obfuscating.configuration.SimpleConfiguration.load(SimpleConfiguration.java:81)
at enterprises.yosemite.obfuscator.Bootstrap.init(Bootstrap.java:30)
at enterprises.yosemite.obfuscator.gui.Frame.main(Frame.java:24)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:473)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:372)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at
java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:941)