2012-03-29 3 views
1

Если у меня есть 2 проекта java в моем RAD. Проект № 1 имеет класс так:Java такой же класс в том же пакете в разных проектах на Eclipse

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

В Project # 2, у меня есть:

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

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

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

+1

Вы попробовали? –

+0

Почему ты не попробовал? – dexametason

+0

Если Model1 затерялся в лесу и нет проекта № 2, чтобы включить его ... это все еще неправильно? -Ты не узнаешь, пока не попробуешь? – radimpe

ответ

1

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

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

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

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

Смежные вопросы