2009-08-04 4 views
11

Mục đích của các lớp học trong gói này là gì?Gói Google App Engine "đóng gói lại"

Tôi muốn sử dụng mã hóa Base64 trong ứng dụng của mình. Khi tôi đang nhập vào Eclipse, tôi được nhắc nếu tôi muốn nhập một lớp có tên là "com.google.appengine.repackaged.com.google.common.util.Base64"

Tôi không thể tìm thấy bất kỳ tài liệu nào về những gì lớp này làm. Không có javadoc hoặc không đề cập đến trong hướng dẫn sử dụng Google App Engine (mà tôi có thể thấy). Đây có phải là một loại API "ẩn" mà tôi không được phép truy cập không?

+0

Dường như với tôi rằng không có mã hóa Base64 tốt trong thư viện GAE/J chuẩn (tôi thấy điều này hơi lạ). Tôi đoán các tùy chọn tốt nhất là apache.commons.codec hoặc ổi. – Tom

Trả lời

12

Đây có phải là loại API "ẩn" mà tôi không được phép truy cập không?

Có.

Mục đích đóng gói lại các lớp Java là có một bản sao thư viện riêng có thể xung đột với một phiên bản khác của thư viện đó (mà nhà phát triển ứng dụng thêm vào dự án của mình dưới dạng tệp jar).

Đó là một câu trả lời có thể cho JAR-hell.

Ngay cả JDK sử dụng cơ chế này, ví dụ: với com.sun.org.apache.xerces là một thư viện phân tích cú pháp XML được phát triển bởi Dự án Apache mà Sun chọn để bao gồm (đóng gói lại).

Không gọi trực tiếp các lớp này. (Bạn có thể, và họ có lẽ sẽ làm việc tốt, nhưng vì chúng không phải là một phần của API chính thức, chúng có thể biến mất trong phiên bản tiếp theo).

+1

Bạn có thể ẩn các gói đó khỏi hiển thị trong Eclipse auto complete bằng cách thực hiện: http://stackoverflow.com/questions/5538714/how-to-hide-some-eclipse-autocomplete-results –