Java один и тот же класс в одном пакете в разных проектах на Eclipse - PullRequest
3 голосов
/ 29 марта 2012

Если у меня есть 2 Java-проекта в моем RAD.Проект № 1 имеет класс, подобный этому:

/src/com/orgname/model/Model1.java

В Проекте № 2 у меня также есть:

/src/com/orgname/model/Model1.java

Оба эти класса компилируются нормально.Теперь в Project # 2 я добавляю Project # 1 как зависимость пути сборки.Сейчас в моем проекте № 2 я пишу тестовый класс, где я делаю: import com.orgname.model.Model1

Какая модель1 будет импортирована?

1 Ответ

2 голосов
/ 18 сентября 2012

Наличие дубликатов классов - ужасная идея!Он может скомпилироваться просто отлично, и может даже нормально сработать 9 раз из 10, но не существует (простого) способа гарантировать, что один загружается поверх другого во время выполнения!

Фактически, очень распространенным явлением, когда существуют подобные дубликаты (будь то файлы .class или .jars), является то, что в некоторых случаях загружается версия 1, а иногда - версия 2. Когда это происходитвозвращается неправильный класс, вы получите ClassNotFound или подобное исключение.Это может быть очень неприятно для отладки, так как ваш код не может быть надежным.

Когда это происходит с артефактами, это называется JAR Hell , но принцип тот же: каждый раз, когда у вас есть две копии класса с одинаковым пакетом и именем, выпросить неприятностей.

Вместо этого измените имя Model1 в одном из ваших проектов или используйте другую упаковку, чтобы различать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...