View Full Version : سوال: بارگذاری فایل class. از داخل فایل jar
rahimi.mohamad24
چهارشنبه 12 تیر 1392, 10:13 صبح
سلام
من میخوام یه فایل Jar را داخل برنامه بیارم و چند تا از فایل های اون را که پسوند class. دارند را runtime داخل برنامه لود کنم.شنیدم که راهش با استفاده از Reflection است.من کد زیر را که داخل متد می نویسم و آدرس فایل jar را که داخل پوشه ای در درایو E بهش میدم،کلی خطا می گیره که باید در آخر براش try-ctch بذارم که برنامه حداقل run بشه ولی اون کد ظاهرا خطا داره،چون اجرا نمیشه.کسی تاحالا تونسته یه فایل .class را داخل برنامش با کد بارگذاری کند؟
File file = new File(System.getProperty("E://") + "/hi.jar");
URLClassLoader clazzLoader = URLClassLoader
.newInstance(new URL[] { file.toURI().toURL() });
spiderman200700
چهارشنبه 12 تیر 1392, 14:45 عصر
سلام. این مثال توی StackOverFlow بود:
ClassLoader loader = URLClassLoader.newInstance(
new URL[] { yourURL },
getClass().getClassLoader()
);
Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
Class<? extends Runnable> runClass = clazz.asSubclass(Runnable.class);
// Avoid Class.newInstance, for it is evil.
Constructor<? extends Runnable> ctor = runClass.getConstructor();
Runnable doRun = ctor.newInstance();
doRun.run();
rahimi.mohamad24
پنج شنبه 13 تیر 1392, 13:56 عصر
این خطا را می دهد:
Exception in thread "main" java.lang.NoClassDefFoundError: antlr/CommonAST
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknow n Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.net.FactoryURLClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
spiderman200700
پنج شنبه 13 تیر 1392, 14:36 عصر
کدتون لطفا
rahimi.mohamad24
جمعه 14 تیر 1392, 08:16 صبح
کدتون لطفا
public void DynamicClassLOading() throws IOException,
ClassNotFoundException {
String pathToJar = "E:\\hi.jar\\";
JarFile jarFile = new JarFile(pathToJar);
Enumeration e = jarFile.entries();
URL[] urls = { new URL("jar:file:" + pathToJar + "!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls);
while (e.hasMoreElements()) {
JarEntry je = (JarEntry) e.nextElement();
if (je.isDirectory() || !je.getName().endsWith(".class")) {
continue;
}
// -6 because of .class
String className = je.getName().substring(0,
je.getName().length() - 6);
className = className.replace('/', '.');
Class c = cl.loadClass(className);
}
}
spiderman200700
جمعه 14 تیر 1392, 11:33 صبح
از کدی که من دادم استفاده کن. ببین جواب میده؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.