Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Создание библиотек в NetBeans


Автор: COVD 22.2.2007, 22:38
Решил оформить несколько классов проекта в виде библиотеки. Создал новый проект, переместил нужные классы туда и откомпилировал. Там создался jar . В основном проекте в разделе Libriaries добавил ссылку на этот jar. Откомпилировал основной проект - все замечательно.

Проблема возникает, когда приходится редактировать библиотеку. Вношу изменения в библиотечные классы и компилирую. Библиотечный jar генерится заново и содержит все изменения. Открываю основной проект и вношу соответствующие изменения там. Компилирую - ошибка! Компилятор непонятно откуда извлекает старую версию библиотеки и  сообщает о несоответствии. IDE видит новую версию библиотеки, а компилятор - старую. Рестарт IDE и компьютера не помогают.

Автор: powerOn 22.2.2007, 22:51
1) Попробуй сделать Clean and Build проектов.
2) Попробуй переподключить библиотеку к проекту.

Автор: Hidrag 22.2.2007, 22:54
ИДЕ делает копию джарника в папку lib то есть ты изменяешь библиотеку а в либе у тебя лежит старая, клин анд билд, должен помочь, хотя как то не обращал внимание как он ведет себя с либами при этом...
положи новую либу в папку lib

Автор: COVD 22.2.2007, 23:21
Цитата

1) Попробуй сделать Clean and Build проектов.
2) Попробуй переподключить библиотеку к проекту.


Уже пробовал, не помогло.

Цитата

ИДЕ делает копию джарника в папку lib 


В проектах нет папки lib. Есть dist. И основной проект имеет ссылку на jar, лежащий в dist библиотечного проекта. Мне кажется, так и должно быть, чтобы не копировать jar вручную при модификации библиотеки. 


Автор: powerOn 23.2.2007, 01:46
Цитата(COVD @  22.2.2007,  23:21 Найти цитируемый пост)
Уже пробовал, не помогло.

Значит ты что-то делаешь не так. У меня все работает. Я специально проверил.

1) Создаем 2 проекта: Java Application и Java Class Library.
2) В проекте библиотеки создаем класс test.TestClass с одним методом (любым). Делаем его Build. В итоге получаем Jar библиотеки.
3) В менеджере библиотек создаем новую библиотеку используя получившийся на предыдущем этапе jar.
4) Подключаем новую библиотеку к Java Application. Используем этот класс в нем.

Если поменять что-либо в test.TestClass и сделать build для его проекта, то эти изменения немедленно видны при работе в другом проекте. 

Еще можно подключать не библиотеку к проекту, а целый проект. Тогда даже одного build для главного проекта достаточно, что бы все изменения были учтены.

Автор: COVD 23.2.2007, 18:44
Цитата

Если поменять что-либо в test.TestClass и сделать build для его проекта, то эти изменения немедленно видны при работе в другом проекте. 


Изменения действительно видны, но компиляция основного проекта не всегда проходит. IDE и компилилятор иногда видят разные версии. Это случается когда рефакторингом меняешь, например, имя функции в библиотеке. Рефакторинг старается внести исправления и в связанных проектах, если они тоже открыты. И вот эта "услуга" и приводит к ситуации. Причем классы разных проектов aaa.AClass и bbb.AClass каким-то образом рассматриваются взаимосвязанно. 



Автор: powerOn 24.2.2007, 00:18
Цитата(COVD @  23.2.2007,  18:44 Найти цитируемый пост)
Это случается когда рефакторингом меняешь, например, имя функции в библиотеке. Рефакторинг старается внести исправления и в связанных проектах, если они тоже открыты. И вот эта "услуга" и приводит к ситуации.

Не получилось воспроизвести ошибку. Честно. Все работает как надо.  smile 
Напишите последовательность действий которая приводит к такой ситуации. 

Цитата(COVD @  23.2.2007,  18:44 Найти цитируемый пост)
Причем классы разных проектов aaa.AClass и bbb.AClass каким-то образом рассматриваются взаимосвязанно. 

Всмысле? Возможно у вас в коде ошибка и просто идет создание объекта совсем не того класса? Если имена классов одинаковые и самому не трудно ошибиться - используйте полные имена классов при создании экземпляров и не используйте одинаковые имена в связанных проектах.

Автор: COVD 25.2.2007, 21:36
Спасибо за участие. У меня все как-то образовалось. И сам не пойму, где ошибался. Просто некоторые действия IDE для меня были неожиданностью. Теперь уже можно признать, что приятной. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)