powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно подцепить jar?
19 сообщений из 19, страница 1 из 1
Как правильно подцепить jar?
    #34288304
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Исходные данные
Есть 2 класса:
1. myPoint.class
2. myLine.class (который использует myPoint.class)

Создан еще один класс Proba.class (находится в d:\Proba), в котором создаются экземпляры классов myPoint и myLine. (и в том и в другом классе, на всякий случай, все методы сделал public)
В Proba.class импортировал Geometry. ( import Geometry.*; )

Классы myPoint и myLine упакованы в Geometry.jar и находятся в ..\jdk1.3\jre\lib\ext (в одной книге прочитал, что если *.jar помещен в эту директорию, то он находится автоматически и параметр -classpath при запуске не требуется). Теперь пробую запустить Proba.class на выполнение следующим образом: D:/Proba> java Proba
Выдает исключительную ситуацию. К сожалению, пишу не со своего компа, помню только, что в названии присутствовало, что-то вроде: java.lang.NoDefFoundException: Proba.

Соответственно, вопросы:
1. Что я делаю неправильно?
2. Как правильно подцеплять jar-архивы.

Заранее спасибо.
С уважением.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34288372
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- если Вы приводите правильное сообщение об ошибке, то в нем ругань идет не на классы хранящиеся в JAR-е, а на класс Proba, который в JAR не упакован. Соответственно надо думать о том как найти класс находяйщийся в папке d:\Proba.
Попробуйте такую конструкцию:
Код: plaintext
1.
D:/Proba> java -cp . Proba
- что означает подключить к CLASSPATH текущую директорию со всеми, находящимися в ней классами (в данном случае D:/Proba). Аналогично можно подключать JAR файлы:
Код: plaintext
1.
D:/Proba> java -cp .;c:\dir\Geometry.jar Proba
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34288775
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Встречные вопросы:
1. Т.е. класс, который я хочу запустить также должен быть упакован в Geometry.jar? Как, в данном случае, следует запускать Proba.class (если он находится в Geometry.jar вместе с классами,кземпляры которых он создает)?
2. Можно ли просто подцепить Geometry.jar при запуске Proba.class, не укпаковывая его в Geometry.jar?

Заранее благодарен.
С уважением
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289219
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В.В.Встречные вопросы:
1. Т.е. класс, который я хочу запустить также должен быть упакован в Geometry.jar? Как, в данном случае, следует запускать Proba.class (если он находится в Geometry.jar вместе с классами,кземпляры которых он создает)?
2. Можно ли просто подцепить Geometry.jar при запуске Proba.class, не укпаковывая его в Geometry.jar?
Заранее благодарен.
С уважением
1. Лучше ничего в lib/ext не размещать. Это все равно, что свои DLL кидать в system32.
2. Все что вам нужно, это чтобы переменная CLASSPATH указывала на файл geometry.jar. В принципе, последняя приведенная строка запуска как раз это и делает. (ключ cp задает classpath)
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289671
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда я, вообще, ничего не понимаю.

Вот смотрите:
myPoint.class и myLine.class я скопировал в d:\Packages\Geometry.
Затем в d:\Packages создал jar: d:\Packages> jar cvf Geometry.jar Geometry\*.class

Proba.class находится в d:\Proba. Пробую его запустить: D:/Proba> java -cp .;c:\dir\Geometry.jar Proba

Результат: Exception in thread "main" java.lang.NoClassDefFoundError: Proba

Как быть?

Заранее благодарен.
С уважением.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289695
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Probа правильно определен
Код: plaintext
 public   static   void  main(String[] args)
?
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289698
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В.В.Тогда я, вообще, ничего не понимаю.

Вот смотрите:
myPoint.class и myLine.class я скопировал в d:\Packages\Geometry.
Затем в d:\Packages создал jar: d:\Packages> jar cvf Geometry.jar Geometry\*.class

Proba.class находится в d:\Proba. Пробую его запустить: D:/Proba> java -cp .;c:\dir\Geometry.jar Proba

Результат: Exception in thread "main" java.lang.NoClassDefFoundError: Proba

Как быть?

Заранее благодарен.
С уважением.
Во-первых, из описанного должно быть: java -cp .;c:\ Packages \Geometry.jar Proba.
Во-вторых, приведите исходник Proba.java. Хотя бы первые несколько строчек, чтобы увидеть - в каком он package.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289742
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗашедшийВо-первых, из описанного должно быть: java -cp .;c:\ Packages \Geometry.jar Proba.
Тьфу, то есть
java -cp .; D:\Packages \Geometry.jar Proba
А вообще советую почитать хотя бы FAQ на этом форуме. Многие вопросы отпадут, в том числе и данный.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289834
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри. Конечно, запускал так:
Код: plaintext
java -cp .;d:\Packages\Geometry.jar Proba

Файл Proba.java:
Код: 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.
 import  Geometry.*;

 public   class  Proba 
{
	
	 public   static   void  main(String[] args) 
	{
		

		 myPoint start =  new  myPoint( 10 . 0 ,  10 . 0 ,  0 ,  0 );
	     myPoint end = start.movePoints(start, 5 . 0 ,- 10 . 0 );

	    	myLine line  =  new  myLine(start,end);



		System.out.println(start);
       System.out.println(end);
        System.out.println(line);

        System.out.println("Start point location in " + start.quart() + " quarts");
        System.out.println("End point location in " + end.quart() + " quarts");

	}
}

Только он не в package, Проблема в том, что когда myPoint.class и myLine.class не упакованы в Geometry.jar все работает нормально (естественно с параметром -classpath), а вот когда они упакованы в Geometry.jar -classpath уже не помогает.

Заранее благодарен.
С уважением.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289864
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34289914
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В.В.Сорри. Конечно, запускал так:
Код: plaintext
java -cp .;d:\Packages\Geometry.jar Proba

Файл Proba.java:
Код: 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.
 import  Geometry.*;

 public   class  Proba 
{
	
	 public   static   void  main(String[] args) 
	{
		

		 myPoint start =  new  myPoint( 10 . 0 ,  10 . 0 ,  0 ,  0 );
	     myPoint end = start.movePoints(start, 5 . 0 ,- 10 . 0 );

	    	myLine line  =  new  myLine(start,end);



		System.out.println(start);
       System.out.println(end);
        System.out.println(line);

        System.out.println("Start point location in " + start.quart() + " quarts");
        System.out.println("End point location in " + end.quart() + " quarts");

	}
}

Только он не в package, Проблема в том, что когда myPoint.class и myLine.class не упакованы в Geometry.jar все работает нормально (естественно с параметром -classpath), а вот когда они упакованы в Geometry.jar -classpath уже не помогает.

Заранее благодарен.
С уважением.
Проверить, там ли лежит Geometry.jar. Проверить его содержимое.
З.Ы. А с каких это пор названия пакетов с большой буквы писаться начали, кстати?
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34290033
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Geometry.jar лежит в d:\Packages. (Т.е. полный путь: d:\Packages\Geometry.jar)
Единственное, чем я озадачен в данном случае, что в книге было сказано, что в архив классы следует помещать со структурой каталогов. Эту хитрую фразу я понял так, что классы следует скопировать в директорию и упаковывать за пределами этой диретории. Т.е. классы я кладу в D:\Packages\Geometry, затем поднимаюсь в D:\Packages и создаю архив. Т.е. содержимое архива: Geometry.jar: Geometry\myPoint.class, Geometry\myLine.class. Т.е. классы внутри каталога.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34290050
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В.В.Geometry.jar лежит в d:\Packages. (Т.е. полный путь: d:\Packages\Geometry.jar)
Единственное, чем я озадачен в данном случае, что в книге было сказано, что в архив классы следует помещать со структурой каталогов. Эту хитрую фразу я понял так, что классы следует скопировать в директорию и упаковывать за пределами этой диретории. Т.е. классы я кладу в D:\Packages\Geometry, затем поднимаюсь в D:\Packages и создаю архив. Т.е. содержимое архива: Geometry.jar: Geometry\myPoint.class, Geometry\myLine.class. Т.е. классы внутри каталога.
А в самих классах прописано package Geometry; ?
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34290134
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во всех, кроме Proba.class

Вот myPoint.java:
Код: 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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
 package  Geometry;



 public   class  myPoint
{

	  public  myPoint( double  xCoord,  double  yCoord)
	{
      x = xCoord;
	  y = yCoord;
	  label =  0 ;

	}

    public  myPoint( double  xCoord,  double  yCoord,  int  flag,  int  lab)
	{
       if  (flag== 1 )
      {
         x = xCoord;
	     y = yCoord;

          vect = Math.sqrt(x*x+y*y);
	      ang =  56 + 78 ;
          
		  label = lab;

      }
	  
	   else 
		{
	      x = xCoord;
	      y = yCoord;
          label =  0 ;
		}
	}





	 public  myPoint()
	{
	  x =  0 ;
	  y =  0 ;

     label =  0 ;
	}


	 public  myPoint( final  myPoint oldPoint)
	{
      x = oldPoint.x;
	  y = oldPoint.y;

       label =  0 ;
	}

     public   void  setX( double  inputX)
	{
	x = inputX;
	}

       public   void  setY( double  inputY)
	{
	y = inputY;
	}

       public   double  getX()
	{
	 return  x;
	}

    public   double  getY()
	{
	 return  y;
	}


      public   void  movePoint( double  xDelta,  double  yDelta)
	{
      x += xDelta;
	  y += yDelta;
	}


      public  myPoint movePoints( final  myPoint oldPoint,  double  xDelta,  double  yDelta)
	{
     
	 myPoint newPoint =  new  myPoint(oldPoint);
	 newPoint.x += xDelta;
     newPoint.y += yDelta;

		  return  newPoint;
     
	}



      public   double  distance( final  myPoint oldPoint)
	{
        return  Math.sqrt((x-oldPoint.x)*(x-oldPoint.x) + (y-oldPoint.x)*(y-oldPoint.x));
	}



    public   int  quart()
	{
	   
        if (x> 0  && y> 0 )
		  return   1 ;
		 
		  else   if  (x< 0  && y> 0 )
	          return   2 ;
          
				   else   if  (x< 0  && y< 0 )
                       return   3 ;
	             
					    else   if  (x> 0  && y< 0 )
                                return   4 ;
	               
							 else   return  (x== 0 . 0  || y ==  0 ) ?  5  : ( int )x;
                          
		 }


   public   void  CoordPol()
	{
        
       double  rad = Math.sqrt(x*x+y*y);
	   double  phi =  56 + 78 ;

        double  [] coords  = {rad, phi};
      
	   this .coordPol = coords;
	    label =  1 ;
 	 }



 public   double  [] getCoordPol_arr()
	{
     
     return  coordPol;
	}


 public   void  CoordPol( final  myPoint oldPoint)
	{
      vect = Math.sqrt(oldPoint.x*oldPoint.x+oldPoint.y*oldPoint.y);
	  ang =  56 + 78 ;
       label =  1 ;
	}

 public   double  getVect()
	{
      return  vect;
	}

 public   double  getAng()
	{
      return  ang;
	}

 public  String toString()
	{
      if  (label== 0 )
     {
		  return  "x = " +  Double .toString(x) + ",  " + "y =  " + y;
     }
     else   if  (label== 1 )
    {
          return  "x = " +  Double .toString(x) + ",  " + "y =  " + y + "      " + "vector = " +  Double .toString(vect) + ",  " + "angle =  " + ang;
    }
      else 
		{
           return  "vector = " +  Double .toString(vect) + ",  " + "angle =  " + ang;
		}


	}


 private   double  x;
 private   double  y;

 private   double  vect;
 private   double  ang;


 private   double  [] coordPol;

 private   int  label;

}


Вот myLine.java:
Код: 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.
 package  Geometry;

 public   class  myLine 
{
	


	 public  myLine( final  myPoint start,  final  myPoint end)
	{
       this .start =  new  myPoint(start);
       this .end =  new  myPoint(end);
	}



	 public  myLine( double  xStart,   double  yStart,  double  xEnd,   double  yEnd)
	{
	 start =  new  myPoint(xStart,yStart);
	 end =  new  myPoint(xEnd,yEnd);
	}


     double  length()
	{
      return  start.distance(end);
	}


	 int  [] locationmyLine(myPoint start, myPoint end)
	{
      int  [] endOfmyLine = {start.quart(), end.quart()};
	 
	  return  endOfmyLine;     
	}

  public  String toString()
	{
      return  "Start point: (" + start + ")" + "\nEnd point:(" + end + ")";
	}
    myPoint start;
    myPoint end;


}
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34290683
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал все у себя, откомпилил - работает.
З.Ы. Советую почитать соглашения об оформлении кода. Названия пакетов - с маленькой буквы, названия классов - с большой!
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34292925
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем, ошибку нашел. Надо было в -classpath указать, в том числе, и путь до самого класса Proba.

Всем огромное спасибо за помощь.
С уважением.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34293014
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В.В.Вобщем, ошибку нашел. Надо было в -classpath указать, в том числе, и путь до самого класса Proba.
Как раз для этого точку используют, чтобы запускать из каталога, в котором класс лежит... В общем, понятно :)
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34304022
В.В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!
Вопрос вдогонку.
Если пакеты и *.jar подцепляются, практически, одинаково (т.е. в плане запуска класса, что с пакетом, что с jar) , то когда что лучше использовать?

Заранее спасибо.
С уважением.
...
Рейтинг: 0 / 0
Как правильно подцепить jar?
    #34304058
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В.В.День добрый!
Вопрос вдогонку.
Если пакеты и *.jar подцепляются, практически, одинаково (т.е. в плане запуска класса, что с пакетом, что с jar) , то когда что лучше использовать?

Заранее спасибо.
С уважением.
Jar запускается медленнее (классы еще распаковать надо), но удобнее - в случае с классами их может быть много, и надо копировать целые структуры каталогов, а Jar - всего один файл. К тому же у Jar есть удобная штука под названием манифест - куда могут прописываться названия требуемых библиотек, запускаемый класс (Main-class). То есть можно написать некое графическое приложение, прописать в манифесте главный класс, запускающий все это, прописать используемые библиотеки (на забыв кинуть их в тот же каталог), и потом запускать в Винде стандартным двойным кликом. Для юзеров - намного удобнее, чем разбираться с classpath, запускать бат-файл и разбираться в опциях командной строки.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно подцепить jar?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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