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


Автор: isabsent 28.8.2010, 19:59
Поставил NetBeans 6.8 (Java EE).  Не понимает - ругается на 
Код

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

не смотря на то что библиотека в Tools->Libraries->Spring Framework 2.5 присутствует по умолчанию...
Скачал библиотеку Spring framework 2.5.6 со springsource.org, разархивировал и попробовал подключить её в Tools->Libraries - никакого эффекта. Где я ошибаюсь?

NetBeans почему-то начинает видеть подключенные библиотеки только если их подключать к каждому конкретному проекту в "Имя Проекта"->Propertis->Libraries или руками добавлять в jdk-.../jre/ext/  но это не кошерный способ насколько я понимаю - с зависимостями начинаются проблемы...

Автор: powerOn 28.8.2010, 23:34
Да, нужно подключать библиотеки к каждому проекту. Почему на ваш взгляд должно быть иначе? Какие проблемы с зависимостями от этого будут?

Автор: isabsent 29.8.2010, 07:43
Например если мне в одном проекте нужны библиотеки Spring, то я должен именно к этому проекту добавить ВСЕ библиотеки, которые есть в дистрибутиве Spring? Мне почему-то кажется логичным подключить библиотеку ко всему NetBeans, чтобы когда я буду делать новый проект Spring уже не нужно было подключать снова к этому конкретному проекту библиотеки Spring. IDE уже будет знать о подключенных библиотеках и сама выбрать необходимые. Поясните плз правильный способ подключения библиотек или дайте ссылку на первоисточник - не могу найти...

Автор: powerOn 29.8.2010, 10:53
У вас есть набор jar файлов, необходимых для работы spring. В NetBeans вы создаете библиотеку (меню tools -> libraries), потом полученную библиотеку подключаете к проектам (в свойствах проекта libraries -> add library). Библиотека создается один раз и может быть потом подключена к любому количеству проектов.  

Автор: isabsent 29.8.2010, 12:50
Понял, спасибо. Если мне нужно включить библиотеку в дистрибутив, то как я должен поступить чтобы не включать лишнего? Я же не знаю зависимостей между файлами в чужой библиотеке. Может мне не нужны все библиотеки Spring, а они все включаются NetBeans'ом после Build в дистрибутив. Самому выяснять что можно выкинуть чтобы кменьшить вес дистрибутива - это как-то странно. Компилятор это знает сам и гораздо лучше меня. Библиотеки, добавленные через "Имя Проекта"->Propertis->Libraries вроде бы в полном составе включаются в дистр - на сколько я понял, хотя может быть нужна всего одна-две. Какой в этом смысл? Логичнее было бы выбрать только те, которые присутствуют у меня в исходниках - которые import - и только их и включить.

Автор: kosmonaFFFt 29.8.2010, 15:50
Насколько я знаю, нетбинс сам подтянет зависимости... Т. е. добавляй только те либы, которые нужны, а остальные подтянутся...
А еще лучще делай  проекты на maven, он точно все зависимости сам разрулит, и недостающие библиотеки скачает...

Автор: isabsent 29.8.2010, 15:55
Да вот я и не понимаю - зачем добавлять в конкретный проект либы? Я же указал необходимые либы для конкретного проекта словом import  в исходниках. Что мешает НетБинсу пошарить в подключенных к нему  (а не к конкретному проекту) либах и САМОМУ включить все что нужно в билд конкретного проекта? Какой смысл заставлять пользователя делать это руками, если эта процедура хорошо определена и легко выполнима самим НетБинсом? Пытаюсь просто понять логику всей этой процедуры...

Автор: powerOn 29.8.2010, 16:43
Цитата(isabsent @  29.8.2010,  16:55 Найти цитируемый пост)
Какой смысл заставлять пользователя делать это руками, если эта процедура хорошо определена и легко выполнима самим НетБинсом?


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

Для мавен проектов можно написать импорт, произойдет поиск по maven репозиторию и выпадет список с подходящими либами, которые можно подключить как dependency. Но почему-то мне кажется, что это не быстрая операция. Настолько не быстрая, что не будет непригодной. (Да, поиск артефактов по классу в мавен проектах у нетбинс имеется). 



Автор: isabsent 29.8.2010, 16:49
Цитата(powerOn @ 29.8.2010,  16:43)
Вообще говоря, класс с одним и тем же именем может существовать в разным библиотеках. И хотя это мало вероятно, но теоретически возможно. Как минимум, в разных версиях одной и тоже библиотеки. IDE должна как-то решить, какую библиотеку подключать. В принципе, ничто не мешает попросить пользователя выбрать нужную и списка подходящих. Это конечно интересная фитча, но я такой ни в одной IDE не видел. 


Ну да - мне кажется что это было бы логично так реализовать. Странно что этого не сделано. Мне кажется что НетБинс умеет гораздо более сложные вещи делать по сравнению с этой процедурой....

Добавлено через 2 минуты и 47 секунд
Цитата(powerOn @ 29.8.2010,  16:43)
Для мавен проектов можно написать импорт, произойдет поиск по maven репозиторию и выпадет список с подходящими либами, которые можно подключить как dependency. Но почему-то мне кажется, что это не быстрая операция. Настолько не быстрая, что не будет непригодной. (Да, поиск артефактов по классу в мавен проектах у нетбинс имеется).

Под Линуксом всякие пакет-менеджеры этим и занимаются. Довольно успешно кстати и почти незаметно. Так что просто можно взять оттуда - всё уже написано  smile  "А мужики-то и не знают!" smile 

Автор: Temdegon 30.8.2010, 04:36
Цитата
Компилятор это знает сам и гораздо лучше меня. Библиотеки, добавленные через "Имя Проекта"->Propertis->Libraries вроде бы в полном составе включаются в дистр - на сколько я понял, хотя может быть нужна всего одна-две. Какой в этом смысл? Логичнее было бы выбрать только те, которые присутствуют у меня в исходниках - которые import - и только их и включить.

А как по вашему нетбинс должен разрулить такую ситуацию:
есть класс A в a.jar, есть класс B в b.jar.
Класс A юзает класс B.
вы делаете import a. Предположим, нетбинс просекает это, и кладет вам с dit\lib a.jar. Но он же не знает, что классу a требуется класс b, и соответсвенно b.jar туда не положит, а вы при запуске получите classNotFoundException.
Кроме того, если нет директивы import, это еще не значит, что какой-то класс не нужен проекту. Вы же можете сделать Class.forName("com.xxx.utils.myClass"), и в этом слуаче jar с этим классом долежн лежать в дистрибутиве.
Ну и вообще, всякие бывают ситуации. Бывает, что у либы есть десяток зависимостей, но они опциональные. И тут уж только вы, путем чтения документации, определите, какие из них реально вам нужны в проекте, а какие можно выбросить.

Автор: COVD 30.8.2010, 16:24
Цитата

...., чтобы когда я буду делать новый проект Spring уже не нужно было подключать снова к этому конкретному проекту библиотеки Spring. IDE уже будет знать о подключенных библиотеках и сама выбрать необходимые. Поясните плз правильный способ подключения библиотек или дайте ссылку на первоисточник - не могу найти... 


Правильный способ - использовать шаблоны проектов - project templates. Когда создаете новый проект, кликаете New Project. Netbeans в ответ предлагает выбрать тип проекта из зарегистрированных (предустановленных) шаблонов. Если там нет нужного (со Spring), то можно создать свой шаблон. Любой проект можно включить в  Netbeans в виде шаблона.
http://blogs.sun.com/seapegasus/entry/tip_create_your_own_project

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