2013-09-22 13 views
8

Mam projekt, w którym chcę pracować z zestawem klas generowanych przez JAXB z XSD. Z tymi klasami chciałbym marshall/unmarshall z XML i JSON.jaxb.properties brakuje w czasie wykonywania po zbudowaniu z Maven

Odkryłem, że potrzebuję Moxy Eclipselink, aby zrobić to, czego potrzebuję. Testowałem swoje zajęcia i przetwarzałem je jako projekt Ant, następnie zdecydowałem przenieść go do Maven dla lepszego zarządzania.

Jednak plik jaxb.properties nie jest rozpoznawany w środowisku wykonawczym.

Mój projekt ma artefakt Maven dla obiektów i inny artefakt dla logiki/przetwarzania. Wyciągałem włosy, próbując dowiedzieć się, gdzie umieścić właściwość jaxb.properties, aby można było je odczytać.

Próbowałem

obiektów projektu

/src/main/resources/jaxb.properties 
/src/main/java/[namespace]/jaxb.properties 

Logic Projekt

/src/main/resources/jaxb.properties 
/src/main/java/[namespace]/jaxb.properties 

Jednak gdy próbuję uzyskać classname mojego JAXBContext wciąż otrzymuję:

class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl 

Jeśli I zmodyfikować moje uruchomić ustawienia, określając opcję JVM z:

-Djavax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory 

uzyskać:

class org.eclipse.persistence.jaxb.JAXBContext 

W obu projektów to mam określonych w pom.xml

<build> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <includes> 
        <include>**/*.properties</include> 
       </includes> 
      </resource> 
     </resources> 
</build> 

Jeśli patrzę w JAR, widzę tam jaxb.properties.

Root of JAR Teraz jestem zdezorientowany.

Odpowiedz

11

Należy upewnić się, że plik jaxb.properties znajduje się w katalogu zasobów w tej samej strukturze pakietu, co odpowiadające mu klasy modelu.

Przykład

+1

Blaise, dzięki za ten link GitHub. Po przeanalizowaniu struktury folderu naprawdę zaczęło to mieć sens. Umieściłem jaxb.properties we właściwym pakiecie i działało świetnie! –

+1

To było dla mnie pomocne, zrobiłem refaktoryzację i przeniosłem klasy modelu w mojej aplikacji, ale zapomniałem przenieść jaxb.properties. Struktura pakietu musi dokładnie pasować do drzewa zasobów. Mój był wyłączony przez jedną paczkę i wszystko się zepsuło. To bardzo ważna kwestia. – Jon

+0

Dziękuję bardzo. To był też mój problem. Właśnie dlatego kocham stackoverflow. A więc wielu świetnych ludzi, takich jak Ty, pomaga! – atom88

0

przykład w Mavenie klasy Javy

src\main\java\com\example\sitemap\generate\domain 

i plik jaxb.properties

src\main\resources\com\example\sitemap\generate\domain\jaxb.properties 
Powiązane problemy