Używanie JAXB JDK bez prefiksu ns2

Po przeczytaniu wszystkich postów na forach Oracle, Stackoverflow, java.net W końcu publikuję tutaj. Używam JAXB do tworzenia plików XML, ale problem polega na tym, że dodaje słynnens2 przedrostek przed moimi elementami, wypróbowałem wszystkie rozwiązania, dla których nikt nie pracował. java -version daje „1.6.0_37”

Rozwiązanie 1: Korzystanie z pakietu-info.java

Stworzyłem plik w moim pakiecie zawierający klasy z adnotacjami my @ Xml * o następującej treści:

@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;

Rozwiązanie 2: NamespacePrefixMapper

Stworzyłem następującą klasę i ustawiłem program mapujący na komendanta:

// 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());
}

Zcom.sun.xml.bind.namespacePrefixMapper nic się nie dzieje, zcom.sun.xml.internal.bind.namespacePrefixMapper, rzuca wyjątek.

Dodałem również zależność maven w moim pom, ale wydaje się, że wersja JRE ma wyższy priorytet:

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

Czy możesz mi w tym pomóc?

PS: Nie mogę bezpośrednio umieścić słoika w mojej ścieżce klasy z powodów związanych z budowaniem. PS2: Nie mogę używać JDK7. Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion