Использование JAXB JDK без префикса ns2

После прочтения всех сообщений об этом на форумах Oracle, Stackoverflow, java.net я наконец-то разместил здесь сообщение. Я использую JAXB для создания файлов XML, но проблема в том, что он добавляет знаменитыйns2 Префикс перед моими элементами, я попробовал все решения, которые никто не работал для меня. Java-версия дает "1.6.0_37"

Решение 1. Использование package-info.java

Я создал файл в своем пакете, содержащий аннотированные классы @ Xml * со следующим содержимым:

@XmlSchema(
    namespace = "http://mynamespace",
    elementFormDefault = XmlNsForm.QUALIFIED,
    xmlns = {
        @XmlNs(namespaceURI = "http://mynamespace", prefix = "")
    }
)
package com.mypackage;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

Решение 2: NamespacePrefixMapper

Я создал следующий класс и установил mapper для маршаллера:

// Change mapper to avoid ns2 prefix on generated XML
class PreferredMapper extends NamespacePrefixMapper {
    @Override
    public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
        return "";
    }
}
NamespacePrefixMapper mapper = new PreferredMapper();
try {
    marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
}
catch (PropertyException e) {
   logger.info("No property for com.sun.xml.bind.namespacePrefixMapper found : " + e.getMessage());
}

С участиемcom.sun.xml.bind.namespacePrefixMapper ничего не происходит, сcom.sun.xml.internal.bind.namespacePrefixMapperЭто исключение.

Я также добавил зависимость maven в мой pom, но кажется, что версия JRE имеет более высокий приоритет:

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.4</version>
</dependency>

Можете ли вы помочь мне в этом?

PS: я не могу напрямую включить флягу в мой classpath по причинам сборки. PS2: я не могу использовать JDK7. Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос