#java #eclipse #maven #pom.xml #m2eclipse
#java #eclipse #maven #pom.xml #m2eclipse
Вопрос:
У меня всегда есть некоторые из самых неясных проблем, и часто я нахожу похожие проблемы, но неприменимые к моей реальной проблеме…
В любом случае, у меня проблема с M2Eclipse, показывающим ошибку в Eclipse. В настоящее время мои POM.xml
ссылки xml-apis:xml-apis
на некоторые версии (да, я знаю о проблеме с Xerces) и, по-видимому, xml-apis
заменяют, а не переопределяют классы в JDK. Один конкретный пример такого находится org.w3c.dom.Element
в rt.jar
в JDK; этот класс существует, но xml-apis
имеет класс с тем же именем и структурой пакета, который эффективно заменяет его — или так думает Eclipse.
Что делает это плохим для меня, так это то, что, поскольку xml-apis
заменяет эту реализацию вместо ее переопределения, в коде есть ссылки (которые мне было поручено перенести с Ant на Maven, где вы могли бы просто изменить порядок сборки, и Eclipse перестанет ныть), где библиотеки не совпадают… Например, Element e; e.getTextContext();
выдаст ошибку, такую, что « The method getTextContent() is undefined for the type Element
.» Однако эта ошибка отображается только в редакторе и окне проблем в Eclipse. Но Maven компилирует его просто отлично… Итак, почему Eclipse показывает ошибку?
Насколько мне известно, нет способа изменить порядок сборки в проекте Maven в Eclipse, чтобы он перестал это делать. У кого-нибудь есть какие-либо решения для этого?
Для справки (если это имеет значение, в чем я сомневаюсь) Я использую Windows 7 Professional, компиляцию с JDK 1.6 и использую Maven 3.0.4.
Ответ №1:
select your project > right click > properties > java build path > order and export > select JRE entry and hit down
здесь вы можете контролировать порядок записей пути к классам, поэтому, если вы хотите, чтобы ваш jar из maven был выбран, сначала переместите его в before запись JRE
Комментарии:
1. Я не знаю, почему я этого не пробовал. Спасибо! Однако есть одно несоответствие, и оно заключается в том, что зависимости maven должны быть после JDK, по-видимому.
2. почему это должно быть после ввода JDK?
3. Бьет меня; Изначально у меня это было до JDK, и это было причиной ошибки — переключив ее на после того, как JDK исправил ее. Я уверен, что в компиляторе есть какая-то механика, которая замечает, что есть класс с повторяющимся путем / именем, и просто берет первый, который он нашел до обмана.
4. первый из них будет обнаружен