![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| SergeyRostov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 18.3.2010 Репутация: нет Всего: нет |
Добрый Вечер! Столкнулся с трудностями при динамической загрузке классов.
Необходимо Создать объект класса находящегося в jar файле. JarFile jarFile = null; try { jarFile = new JarFile(jarname); Enumeration entries = jarFile.entries(); InputStream in; byte[] data; while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); System.out.println(entry.getName()); } jarFile.close(); } catch (IOException e1) {e1.printStackTrace();} interactionInterface node = null; URL url = null; try { url = new URL("jar", "","file:"+File.separator+jarname); ClassLoader loader = URLClassLoader.newInstance(new URL[] {url} ,getClass().getClassLoader()); System.out.println(url.toString()); //Class<?> clazz = Class.forName("FunctionedNode"+File.separator+"FunctionNode", true, loader); ---->> Class<?> clazz = Class.forName("FunctionedNode/FunctionNode", true, loader); Class<? extends interactionInterface> runClass = clazz.asSubclass(interactionInterface.class); Constructor<? extends interactionInterface> ctor = runClass.getConstructor(); node = ctor.newInstance(); writeConsole(node.getClass().toString()); writeConsole(node.GetAddress()); writeConsole(""+node.GetPort()); writeConsole(""+new Date(node.GetTime()).toString()); } catch (ClassNotFoundException e) {e.printStackTrace(); } catch (SecurityException e) {e.printStackTrace(); } catch (NoSuchMethodException e) {e.printStackTrace(); } catch (MalformedURLException e) {e.printStackTrace(); } catch (IllegalArgumentException e) {e.printStackTrace(); } catch (InstantiationException e) {e.printStackTrace(); } catch (IllegalAccessException e) {e.printStackTrace(); } catch (InvocationTargetException e) {e.printStackTrace(); } } META-INF/MANIFEST.MF FunctionedNode/ReadReqular.class FunctionedNode/InteractionInterface.class FunctionedNode/Node.class FunctionedNode/MyFormatted.class FunctionedNode/Message.class FunctionedNode/ControlPoint.class FunctionedNode/FunctionNode.class FunctionedNode/ServerFunctionNode.class FunctionedNode/SendMessage.class FunctionedNode/Time.class FunctionedNode/SenderMessage.class jar:file:\Works\rs.jar java.lang.ClassNotFoundException: FunctionedNode/FunctionNode at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at cl.n1(cl.java:49) at cl.OpenLoadJar(cl.java:149) at main.main(main.java:8) Добавлено через 2 минуты и 7 секунд Так же пробовал еще 2а варианта.... но результат почти один и тот же( interactionInterface node = null; jarname = jarname.substring(0,jarname.length()-4); try { String url = "file:"+jarname+"/FunctionedNode/FunctionNode.class"; URL myUrl = new URL(url); URLConnection connection = myUrl.openConnection(); InputStream input = connection.getInputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int data = input.read(); while(data != -1){ buffer.write(data); data = input.read(); } input.close(); byte[] classData = buffer.toByteArray(); Class cl = defineClass("FunctionedNode.FunctionNode",classData, 0, classData.length); node = (interactionInterface)cl.newInstance(); } catch (InstantiationException e) {e.printStackTrace(); } catch (IllegalAccessException e) {e.printStackTrace(); } catch (MalformedURLException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace();} java.io.FileNotFoundException: Works\rs\FunctionedNode\FunctionNode.class (Системе не удается найти указанный путь) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) at cl.n2(cl.java:75) at cl.OpenLoadJar(cl.java:148) at main.main(main.java:8) Добавлено через 3 минуты и 12 секунд JarFile jarFile = null; try { jarFile = new JarFile(jarname); Enumeration entries = jarFile.entries(); InputStream in; byte[] data; while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); System.out.println(entry.getName()); if (entry.getName().equals("FunctionedNode/FunctionNode.class")){ try { in = jarFile.getInputStream(entry); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int data1 = in.read(); while(data1 != -1){ buffer.write(data1); data1 = in.read(); } byte[] classData = buffer.toByteArray(); Class cl = defineClass("FunctionedNode.FunctionNode",classData, 0, classData.length); interactionInterface node = (interactionInterface)cl.newInstance(); } catch (InstantiationException e) {e.printStackTrace(); } catch (IllegalAccessException e) {e.printStackTrace();} }//if } jarFile.close(); } catch (IOException e1) {e1.printStackTrace();} } FunctionedNode/FunctionNode.class Exception in thread "main" java.lang.NoClassDefFoundError: FunctionedNode/InteractionInterface at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at cl.n3(cl.java:126) at cl.OpenLoadJar(cl.java:149) at main.main(main.java:8) Добавлено через 5 минут и 12 секунд Помогите плиз, научный руководитель прислал к вам просить о помощи)) Присоединённый файл ( Кол-во скачиваний: 6 )
rs.jar 15,73 Kb |
|||
|
||||
| drG100k |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
Даааа..... То ли я вопроса не понял, то ли ответ таков:
App.jar META-INF/MANIFEST.MF pack/MainClass.class rs.jar MANIFEST.MF
pack/MainClass.java
можно конечно изврат устроить типа
И в package name зря прописные буквы используете. Да и вообще, как это к EE относится? Это сообщение отредактировал(а) drG100k - 8.4.2010, 22:47 |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |