2009-08-04 14 views
11

このパッケージのクラスの目的は何ですか?Google App Engineパッケージ「再パッケージ」

私のアプリでBase64エンコーディングを使いたいです。 Eclipseで入力しているときに、「com.google.appengine.repackaged.com.google.common.util.Base64」というクラスをインポートするかどうかを確認するメッセージが表示されます

ドキュメントが見つかりませんこのクラスが何をしているかについて。 javadocはありません。また、Google App Engineマニュアル(これは私が見ることができます)には言及されていません。これは私がアクセスするはずのない「隠された」APIなのでしょうか?

+0

標準のGAE/Jライブラリには良いBase64エンコーディングはありません(私はこれが少し奇妙です)。私は最高のオプションは、apache.commons.codecまたはguavaだと思います。 – Tom

答えて

12

これは私がアクセスするはずのない「隠された」APIですか?

はい。

Javaクラスを再パッケージ化する目的は、他のバージョンのライブラリ(アプリケーション開発者がプロ​​ジェクトにjarファイルとして追加する)と競合する可能性のあるライブラリのプライベートコピーを持つことです。

JAR-hellに対する可能な答えの1つです。

JDKでも、このメカニズムを利用しています。 comプロジェクトが開発したXML解析ライブラリであるcom.sun.org.apache.xercesをSunが(再パッケージ化して)選択するようにしました。

これらのクラスを直接呼び出さないでください。 (おそらく正常に動作しますが、公式のAPIの一部ではないため、次のバージョンでは消える可能性があります)。

+1

これらのパッケージがEclipseの自動完成で表示されないようにするには、次のようにします:http://stackoverflow.com/questions/5538714/how-to-hide-some-eclipse-autocomplete-results –