2013-09-22 62 views
8

Tôi có một dự án mà tôi muốn làm việc với một tập hợp các Lớp được tạo bởi JAXB từ một XSD. Với các lớp này, tôi muốn marshall/unmarshall từ XML và JSON.thiếu jaxb.properties khi chạy khi được xây dựng với Maven

Tôi đã tìm ra mình cần Moxy Eclipselink để làm những gì tôi cần. Tôi đã thử nghiệm các lớp và quy trình của mình như một dự án Ant, sau đó tôi quyết định chuyển nó sang Maven để quản lý tốt hơn.

Tuy nhiên, tệp jaxb.properties dường như không được nhận dạng khi chạy.

Dự án của tôi có tạo phẩm Maven cho các đối tượng và một tạo phẩm khác cho logic/xử lý. Tôi đã kéo tóc ra cố gắng tìm ra nơi để đặt jaxb.properties để nó có thể được đọc.

Tôi đã thử

Đối tượng dự án

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

logic Dự án

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

Tuy nhiên, khi tôi cố gắng để có được những classname của JAXBContext của tôi, tôi vẫn nhận được:

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

Nếu tôi sửa đổi cài đặt chạy của tôi bằng cách xác định một lựa chọn JVM của:

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

tôi nhận được:

class org.eclipse.persistence.jaxb.JAXBContext 

Trong cả hai dự án tôi đã quy định này trong pom.xml

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

Nếu tôi nhìn tại JAR, tôi thấy jaxb.properties trong đó.

Root of JAR Bây giờ tôi đang bối rối.

Trả lời

11

Bạn cần đảm bảo tệp jaxb.properties nằm trong thư mục tài nguyên trong cùng một cấu trúc gói như các lớp mô hình tương ứng.

Ví dụ

+1

Blaise, cảm ơn liên kết GitHub đó. Sau khi perusing cấu trúc của thư mục, nó thực sự bắt đầu có ý nghĩa. Tôi đặt jaxb.properties vào gói đúng, và nó hoạt động rất tốt! –

+1

Điều này rất hữu ích đối với tôi, tôi đã tái cấu trúc và di chuyển các lớp mô hình trong ứng dụng của mình nhưng quên di chuyển jaxb.properties. Cấu trúc gói phải khớp chính xác dưới cây tài nguyên. Của tôi đã được tắt bởi một gói và tất cả mọi thứ đã phá vỡ. Đây là một điểm rất quan trọng. – Jon

+0

Cảm ơn bạn rất nhiều. Đây cũng là vấn đề của tôi. Đây là lý do tại sao tôi yêu stackoverflow. Vì vậy, nhiều người tuyệt vời như bạn để giúp đỡ! – atom88

0

Ví dụ, trong maven lớp java

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

và file jaxb.properties

src\main\resources\com\example\sitemap\generate\domain\jaxb.properties