2009-08-04 6 views
11

¿Cuál es el propósito de las clases en este paquete?paquete de Google App Engine "reempaquetado"

Quiero usar la codificación Base64 en mi aplicación. Mientras escribo en Eclipse, me pregunto si deseo importar una clase llamada "com.google.appengine.repackaged.com.google.common.util.Base64"

No encuentro ninguna documentación sobre lo que hace esta clase No hay javadoc, o ninguna mención en el manual de Google App Engine (que puedo ver). ¿Es esto una especie de API "oculta" a la que se supone que no debería tener acceso?

+0

Me parece que no hay una buena codificación Base64 en las bibliotecas GAE/J estándar (me parece un poco extraño). Supongo que las mejores opciones son apache.commons.codec o guava. – Tom

Respuesta

12

¿Se trata de una especie de API "oculta" a la que se supone que no debo tener acceso?

Sí.

El propósito de reempaquetar clases Java es tener una copia privada de una biblioteca que de otra manera podría entrar en conflicto con otra versión de esa biblioteca (que el desarrollador de la aplicación agrega a su proyecto como un archivo jar).

Es una posible respuesta a JAR-hell.

Incluso el JDK hace uso de este mecanismo, p. con com.sun.org.apache.xerces, que es una biblioteca de análisis XML desarrollada por el Proyecto Apache que Sun elige incluir (volver a empaquetar).

No llame a estas clases directamente. (Podrías, y probablemente funcionarían bien, pero como no son parte de la API oficial, podrían desaparecer en la próxima versión).

+1

Puede ocultar esos paquetes para que no aparezcan en Eclipse autocompletar al hacer: http://stackoverflow.com/questions/5538714/how-to-hide-some-eclipse-autocomplete-results –