Google App Engine “remontado” pacote
-
22-07-2019 - |
Pergunta
Qual é o propósito das classes neste pacote?
Eu quero usar codificação Base64 em meu aplicativo. Como eu estou teclando em Eclipse, eu sou solicitado se eu quiser importar uma classe chamada "com.google.appengine.repackaged.com.google.common.util.Base64"
Não consigo encontrar qualquer documentação sobre o que esta classe faz. Sem javadoc, ou nenhuma menção no manual do Google App Engine (que posso ver). Isso é algum tipo de API "escondidos" que eu não deveria ter acesso?
Solução
Trata-se de algum tipo de API "escondidos" que eu não deveria ter acesso?
Sim.
O propósito da reembalagem classes Java é ter uma cópia privada de uma biblioteca que de outra forma poderiam entrar em conflito com outra versão do que alguma biblioteca (que o desenvolvedor do aplicativo adiciona ao seu projeto como um arquivo jar).
É uma resposta possível para JAR-inferno.
Mesmo o JDK faz com que a utilização deste mecanismo, por exemplo com com.sun.org.apache.xerces que é uma biblioteca de análise XML desenvolvido pelo Projeto Apache que a Sun optar por incluir (reembalado).
Não chame essas classes diretamente. (Você pode, e eles provavelmente iria funcionar bem, mas como eles não são parte da API oficial, eles podem desaparecer na próxima versão).