问题 Google App Engine“重新包装”套餐


这个包中的类的目的是什么?

我想在我的应用程序中使用Base64编码。当我在Eclipse中输入时,系统会提示我是否要导入名为“com.google.appengine.repackaged.com.google.common.util.Base64”的类

我找不到任何关于这门课程的文档。没有javadoc,或者没有在Google App Engine手册中提及(我可以看到)。这是一种我不应该访问的“隐藏”API吗?


12857
2017-08-04 03:59


起源

在我看来,标准GAE / J库中没有好的Base64编码(我发现这有点奇怪)。我想最好的选择是apache.commons.codec或番石榴。 - Tom


答案:


这是一种我不应该访问的“隐藏”API吗?

是。

重新打包Java类的目的是拥有一个库的私有副本,否则可能会与某个库的另一个版本(应用程序开发人员将其作为jar文件添加到其项目中)发生冲突。

这是JAR-hell的一个可能的答案。

甚至JDK也使用这种机制,例如使用com.sun.org.apache.xerces,它是由Apache选择包含(重新打包)的Apache项目开发的XML解析库。

不要直接调用这些类。 (你可以,他们可能会工作正常,但因为他们不是官方API的一部分,他们可能会在下一个版本中消失)。


12
2017-08-04 09:32



您可以通过执行以下操作来隐藏这些包在Eclipse自动完成中显示: stackoverflow.com/questions/5538714/... - Adam Gent