2009-08-12 33 views
7

Tôi đang cố gắng sử dụng giải pháp để tuần tự hóa ngoại lệ bằng cách sử dụng jaxb. (http://forums.java.net/jive/thread.jspa?messageID=256122)gói com.sun.xml.internal.bind.v2.model.annotation không tồn tại

Lớp tôi cần triển khai cho giải pháp đó yêu cầu tham chiếu các lớp com.sun sau.

import com.sun.xml.internal.bind.v2.model.annotation.AbstractInlineAnnotationReaderImpl; 
import com.sun.xml.internal.bind.v2.model.annotation.Locatable; 
import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnotationReader; 
import com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader; 

Khi tôi biên dịch và chạy mã bên trong Eclipse, nó hoạt động tốt. Nhưng khi tôi biên dịch mã bằng Maven, nó không phàn nàn về các gói com.sun như "package com.sun.xml.internal.bind.v2.model.annotation không tồn tại".

Cả nhật thực và maven đang sử dụng JDK 1.6, vì vậy tôi không hiểu tại sao điều này xảy ra. Không phải là những lớp com.sun bên trong JDK?

EDIT: Cuối cùng tôi đã quyết định điều đó là không thể. Tôi chỉ cần tạo một bean mới và sao chép thông tin tôi cần và sử dụng nó.

Trả lời

16

Nếu một lớp học trong gói com.sun. *, nó chỉ có nghĩa là nó được phát triển bởi Sun chứ không phải là một phần của JDK.

Các lớp mặt trời trong JDK được đặt trước mặt trời. * và không phải là một phần của giao diện được hỗ trợ công khai nên được sử dụng cẩn thận. Từ các số Sun FAQ:

Các lớp mà Sun bao gồm với Java 2 SDK, Standard Edition, nằm trong nhóm gói java. , javax., tổ chức * và mặt trời. . Tất cả trừ mặt trời. Các gói là một phần tiêu chuẩn của nền tảng Java và sẽ được hỗ trợ trong tương lai. Nói chung, các gói như mặt trời. , nằm ngoài nền tảng Java, có thể khác nhau trên nền tảng hệ điều hành (Solaris, Windows, Linux, Macintosh, v.v.) và có thể thay đổi bất kỳ lúc nào mà không cần thông báo với phiên bản SDK (1.2, 1.2.1, 1.2.3, v.v.) Chương trình có chứa các cuộc gọi trực tiếp đến mặt trời. Các gói không phải là 100% Java thuần túy. Nói cách khác:

java. , javax. và org. * Các gói được ghi trong Đặc tả API phiên bản tiêu chuẩn Java 2 nền tảng tạo nên giao diện chính thức, được hỗ trợ, công khai.

Nếu chương trình Java gọi trực tiếp chỉ API trong các gói này, chương trình sẽ hoạt động trên tất cả nền tảng tương thích với Java, bất kể nền tảng hệ điều hành cơ bản.

Mặt trời. * Gói là không một phần của giao diện công cộng được hỗ trợ.

Chương trình Java gọi trực tiếp vào gói mặt trời. * Là không đảm bảo hoạt động trên tất cả các nền tảng tương thích với Java. Trong thực tế, một chương trình như vậy không được đảm bảo để hoạt động ngay cả trong các phiên bản tương lai trên cùng một nền tảng.

Có nói rằng, những lớp bạn liệt kê có sẵn trên kho JBoss trong tạo tác sau đây:

<dependency> 
    <groupId>javax.xml</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.1</version> 
</dependency> 
Các vấn đề liên quan