Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как указать путь к внешнему jar'у? / 25 сообщений из 29, страница 1 из 2
10.05.2006, 20:29
    #33718912
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
в eclipse создан plugin, как продукт из-под eclipse - работает..
после export'a запускается как самостоятельное приложение, но например к ораклу не коннектится, как установить связь с внешними jar'ами? class.forname("..") не находит нужный jar (class)
пытался указать путь в запускном батнике, в коде через system.property - не находит..
подскажите как правильно pls

и как работают build properties в манифесте? никаких "связей" будто не переносится..
...
Рейтинг: 0 / 0
11.05.2006, 09:46
    #33719458
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
librarypath и classpath как указать?
...
Рейтинг: 0 / 0
11.05.2006, 09:49
    #33719470
как указать путь к внешнему jar'у?
...
Рейтинг: 0 / 0
11.05.2006, 11:03
    #33719761
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
в запускном батнике есть -classpath D:\..ojdbc14.jar, в котором есть oracle.jdbc.OracleDriver
когда программа доходит до места Class.forName("oracle.jdbc.OracleDriver") в System.getProperty("java.class.path") присутствует указанный jar, но поднятие класса вылетает в exeption java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
почему? чего не хватает?
...
Рейтинг: 0 / 0
11.05.2006, 11:16
    #33719822
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
проект -> свойтсва

третий сверху пунк ("путь компановки java")->
закладка "библиотеки"->
"добавить внешние jar"

вроде так если я правильно понял
...
Рейтинг: 0 / 0
11.05.2006, 11:17
    #33719828
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
сори совсем не то
...
Рейтинг: 0 / 0
11.05.2006, 11:27
    #33719858
как указать путь к внешнему jar'у?
a78в запускном батнике есть -classpath D:\..ojdbc14.jar, в котором есть oracle.jdbc.OracleDriver
когда программа доходит до места Class.forName("oracle.jdbc.OracleDriver") в System.getProperty("java.class.path") присутствует указанный jar, но поднятие класса вылетает в exeption java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
почему? чего не хватает?
Всего хватает. Ищите ошибки типа "c вместо с" и т.п.
...
Рейтинг: 0 / 0
11.05.2006, 12:25
    #33720058
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
да нет ошибок, и в startup.jar org.eclipse.core.launcher.Main она находит..
...
Рейтинг: 0 / 0
11.05.2006, 14:20
    #33720458
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
я раньше тоже сталкивался с етими граблями. решение может быть например такое:
когда вы выполняете свой проект, то в окне "Console" (куда эклипса выкидывает сообщения) появится путь ко всем библиотекам. вот вы его и используйте.
работает как часы.
...
Рейтинг: 0 / 0
11.05.2006, 21:21
    #33721524
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
2kadet как использовать? под eclips'ой всё работает и путь правильный

неужели никто не знает? а с classloader'ом кто работал?
...
Рейтинг: 0 / 0
12.05.2006, 00:13
    #33721684
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
у каждаго эклипсплагина свой classpath и jar'ы и пишутся они в его опесании. (plugin.xml что ли) ну или в графич.плагин редакторе посмотри как добавить к
плагину jar'ы.
...
Рейтинг: 0 / 0
12.05.2006, 13:23
    #33722812
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
a782kadet как использовать? под eclips'ой всё работает и путь правильный

неужели никто не знает? а с classloader'ом кто работал?
пардон.

вот смотри, например в проекте ты используешь какие то пакеты. Естественно ты знаешь где они расположенны (Если нет - то,например, жми Projects/properties в новом окне выбераешь с лево позицию "java build path" и с правой стороны в окне "Libraries"). Далее, естественно, тебе конечно же надо экспортировать сам проект в jar-архив, например с именем "ВновьСгенерированный Архив.jar" .Для этого жмешь правой кнопкой мыши на проекте (в окне Package Exploer) и выбираешь опцию "Export", где тебе будет предложенно новое окно, в котором ты выбираешь "jar file". В следующих окнах надо будет уточнить некоторые потребности (например имя архива) и в итоге ты получишь свой архив.

После всего нужно в командной строке написать простую команду (либо оформить все ето в скрипт)

Код: plaintext
1.
java -classpath "D:\MOTORA.NET\MotoraLib\commons-net-1.4.1\commons-net-1.4.1.jar;D:\MOTORA.NET\MotoraLib\jakarta-oro-2.0.8\jakarta-oro-2.0.8\jakarta-oro-2.0.8.jar;D:\MOTORA.NET\MotoraLib\jakarta-regexp-1.4.jar;D:\MOTORA.NET\MotoraLib\jdom-1.0\jdom-1.0\build\jdom.jar;D:\MOTORA.NET\MotoraLib\Xerces-J-bin.2.5.0\xerces-2_5_0\xercesImpl.jar;D:\MOTORA.NET\MotoraLib\ВновьСгенерированный Архив.jar" ВновьСгенерированный Архив.МойВыполняющийсяКласс

здесь ты можешь видеть, что после -classpath в ковычках прописанны все необходимые библиотеки (для виндовз), а так же в самом конце указывается запускающийся класс - ВновьСгенерированный Архив.МойВыполняющийсяКласс
...
Рейтинг: 0 / 0
12.05.2006, 15:55
    #33723403
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
kadet спасибо, но java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver хотя путь к этому драйверу в -classpath указан, вот прям как ты и писал..
...
Рейтинг: 0 / 0
12.05.2006, 16:15
    #33723485
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
обрати внимание на разделители между jar-архивами:
для виндовоза это ";", для Linux - ":"
желательно чтоб вся строка с путями была закрыта в кaвычки(для виндовоза по крайней мере).
на всякий случай убедись, что в путях нет пробелов.
если есть возможность, то просмотри каждый архив и убедись, что нужный класс действительно там сидит.
...
Рейтинг: 0 / 0
16.05.2006, 14:51
    #33730008
PWP
PWP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
Можно присоседиться к теме ?
Как подключить jar в динамике при исполнении приложения ? (не через
classpath )
Пробовал через :
String class_path1=System.getProperty("java.class.path");
String class_path="D:/new.jar";
String xx=System.setProperty("java.class.path",class_path+class_path1);
Все в систему заносит а искать в новом (new.jar) ничего не хочет.
Нужно что-то еще (типа обновить classpath) или такая схема вообще не проходит ?
Это на тему сокращения об'емов для запуска приложения на клиенте !
...
Рейтинг: 0 / 0
17.05.2006, 02:10
    #33731265
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
PWPМожно присоседиться к теме ?
Как подключить jar в динамике при исполнении приложения ? (не через
classpath )

Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
JarInputStream jis =  new  JarInputStream( new  FileInputStream(
		"c:/temp/temp.jar"));
JarEntry entry = jis.getNextJarEntry();
 while  (entry !=  null ) {
	String name = entry.getName();
	 if  (entry.getName().endsWith(".class")) {
		name = name.substring( 0 , name.length() -  6 );
		name = name.replace('/', '.');
		System.out.print(name);
		 try  {
			 Class .forName(name);
			System.out.println("\t- loaded");
		}  catch  (ClassNotFoundException e) {
			System.out.println("\t- not loaded");
		}
	}
	entry = jis.getNextJarEntry();
}
...
Рейтинг: 0 / 0
17.05.2006, 02:14
    #33731271
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
PWPЭто на тему сокращения об'емов для запуска приложения на клиенте !
Так же советую посмотреть класс JarURLConnection.
...
Рейтинг: 0 / 0
18.05.2006, 11:20
    #33734851
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
AciD_v а что делать, если на все классы из jar'а он пишет "not loaded"? почему блин не грузит?
...
Рейтинг: 0 / 0
18.05.2006, 13:40
    #33735508
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
a78AciD_v а что делать, если на все классы из jar'а он пишет "not loaded"? почему блин не грузит?
Исправил. Вот работающий вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
 package  com.comarch.telco.test;

 import  java.io.*;
 import  java.net.*;
 import  java.util.jar.*;

 public   class  MyJarLoader {

   public   static   void  main(String[] args)  throws  FileNotFoundException, IOException {
    String jarName = "c:/temp/temp.jar"; // заменить на свой

    URLClassLoader urlLoader = getURLClassLoader( new  URL("file",  null , jarName));

    JarInputStream jis =  new  JarInputStream( new  FileInputStream(jarName));
    JarEntry entry = jis.getNextJarEntry();
     int  loadedCount =  0 , totalCount =  0 ;

     while  (entry !=  null ) {
      String name = entry.getName();
       if  (name.endsWith(".class")) {
        totalCount++;
        name = name.substring( 0 , name.length() -  6 );
        name = name.replace('/', '.');
        System.out.print("> " + name);

         try  {
          urlLoader.loadClass(name);
          System.out.println("\t- loaded");
          loadedCount++;
        }  catch  (Throwable e) {
          System.out.println("\t- not loaded");
          System.out.println("\t " + e.getClass().getName() + ": " + e.getMessage());
        }

      }
      entry = jis.getNextJarEntry();
    }

    System.out.println("\n---------------------");
    System.out.println("Summary:"); 
    System.out.println("\tLoaded:\t" + loadedCount); 
    System.out.println("\tFailed:\t" + (totalCount - loadedCount)); 
    System.out.println("\tTotal:\t" + totalCount); 
  }
  
   private   static  URLClassLoader getURLClassLoader(URL jarURL) {
     return   new  URLClassLoader( new  URL[]{jarURL});
  }
}
Сейчас класс может не загрузиться, если он использует классы из других (не загруженных) jar'ов. Т.е. надо сразу все нужные архивы передавать в new URLClassLoader(new URL[]{allNeededJarURLs})

З.Ы. Правда, еще не разобрался почему из одних архивов классы загружаються первым способом (с помощью Class.forName(name) ), а из других нет. Например, у меня с dom4j.jar - первый способ работает, а с hibernate.jar - лажа.
...
Рейтинг: 0 / 0
19.05.2006, 09:07
    #33737437
PWP
PWP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
AciD_v[quot a78]AciD_v а что делать, если на все классы из jar'а он пишет "not loaded"? почему блин не грузит?
Исправил. Вот работающий вариант:
[src java]package com.comarch.telco.test;

Спасибо за подключение к вопросу. Но он немного в другой плоскости.
Не хотелось бы тупо грузить все классы или искать все зависимые начиная с
первого. Хотелось бы ,чтобы система сама подгружала их как это делается из
classpath.
Например нужно :
1)через Class.forName(name); указать какой либо драйвер
из внешней библиотеки или
2)то что нужно по import (хотя наверное import-то
и можно смоделировать предложенным способом хотя непонятно как это
сделать на автомате и практически).
...
Рейтинг: 0 / 0
19.05.2006, 09:13
    #33737447
PWP
PWP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
AciD_v[quot a78]AciD_v а что делать, если на все классы из jar'а он пишет "not loaded"? почему блин не грузит?
Исправил. Вот работающий вариант:
[src java]package com.comarch.telco.test;

Спасибо за подключение к вопросу. Но он немного в другой плоскости.
Не хотелось бы тупо грузить все классы или искать все зависимые начиная с
первого. Хотелось бы ,чтобы система сама подгружала их как это делается из
classpath.
Например нужно :
1)через Class.forName(name); указать какой либо драйвер
из внешней библиотеки или
2)то что нужно по import (хотя наверное import-то
и можно смоделировать предложенным способом хотя непонятно как это
сделать на автомате и практически).
...
Рейтинг: 0 / 0
19.05.2006, 09:59
    #33737586
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
AciD_v спасибо огромное за участие!!

только плиз объясни немножко, как пользоваться грамотно инструментом этим :)

загрузил твой пример все классы из моего jar'а, однако -
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
т.е. все классы из jdbc-драйвера он загрузил, а пользоваться не хочет..(не может)
...
Рейтинг: 0 / 0
19.05.2006, 10:12
    #33737635
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
проблема в том что когда я приложение запускаю под эклипсой - мне достаточно добавить этот jar в buildpath чтобы class.forname работал.. а когда я свой продукт экспортирую - связь с jar'ом теряется и class.forname его не находит, как я ни пытался его ему подсунуть..
...
Рейтинг: 0 / 0
19.05.2006, 11:42
    #33738027
PWP
PWP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
a78проблема в том что когда я приложение запускаю под эклипсой - мне достаточно добавить этот jar в buildpath чтобы class.forname работал.. а когда я свой продукт экспортирую - связь с jar'ом теряется и class.forname его не находит, как я ни пытался его ему подсунуть..

C внешним jar работает другой вид class.forname :
String jarName = "c:/JLIB/postgresql-8.1-404.jdbc3.jar";
URLClassLoader urlLoader = getURLClassLoader(new URL("file", null, jarName));
String dr_name = "org.postgresql.Driver";
//
Class.forName(dr_name,true,urlLoader);
класс находится но connect не идет
//
a вот такой class.forname :
Class.forName(dr_name);
класс не находит и далее не идет connection
...
Рейтинг: 0 / 0
19.05.2006, 11:53
    #33738070
a78
a78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как указать путь к внешнему jar'у?
PWP
Class.forName(dr_name,true,urlLoader);
класс находится но connect не идет

аналогично, сласс поднимается а менеджер его не видит
java.sql.SQLException: No suitable driver
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как указать путь к внешнему jar'у? / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]