2010年4月9日金曜日

Debian/GNU Linux squeeze に AndroidSDK を入れる際 Eclipse が吐くエラーの 対処

Debian lenny から squeeze への更新で、Java では IPv4, IPv6 の設定の不備(バグかどうかは不明)で、Eclipse はそのままではネットワークに接続出来ません。 この為新しいソフトウェアを導入する機能が作動せず、AndroidSDK を入れる際の障害になるためエントリーに起こしておきます。

作業の簡略化の為、このエントリーではAndroidSDKはダウンロードせず進めます。 まず Eclipse IDE for Java Developers をダウンロードして解凍します。

$ tar xfvz eclipse-java-galileo-SR2-linux-gtk-x86_64.tar.gz
...
$

そのままディレクトリへ潜り起動します。

$ cd eclipse/
$ ./eclipse

Eclipse が起動したらメニューから [Help] → [Install New Software...] と進み Install ダイアログを出現させます。 ※ 「Help → Install New Software」 は Eclipse galileo (3.5) の際の手順です。

ダイアログの上部のボタン [Add] をクリックします。 Add Site ダイアログが出現するので、Name は適当に AndroidADT など、 Location は Android Developers 公式 に書かれている https://dl-ssl.google.com/android/eclipse/ または http://dl-ssl.google.com/android/eclipse/ と入力する。

ここで OK を押すと以下のようなエラーメッセージが現れます。

Unable to connect to repository http://dl-ssl.google.com/android/eclipse/content.xml
 Unable to connect to repository http://dl-ssl.google.com/android/eclipse/content.xml
 無効な引数です

repository が無いのでは無く、ネットワークに接続できない為のようです。

対処方法

これは eclipse.ini に起動オプションを追加するだけで解決します。

eclipse/eclipse.ini
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519
-product
org.eclipse.epp.package.java.product
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms40m
-Xmx256m

このファイルにこの行を追加してください。
-Djava.net.preferIPv4Stack=true

changed eclipse/eclipse.ini
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519
-product
org.eclipse.epp.package.java.product
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Djava.net.preferIPv4Stack=true
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms40m
-Xmx256m

これで同様に Install New Software から Android ADT Plugin を追加するとエラーも無く導入できます。

他にも/etc/sysctl.d/bindv6only.conf の net.ipv6.bindv6only = 1 を 0 にする方法もあるそうですが、これは変更しなくても接続できました。

今回の問題点は Java で書かれた Twitterクライアント の PeraPeraPrv:P3 でも過去に遭遇しました。 現在は指定無しでも動いたので、何か更新を施されたのだと思います。

以下エラー内容から辿り着けるように、エラーメッセージ貼り付け。 関係ない検索で来てしまった方は、申し訳ありません。

null
Error
Thu Apr 08 12:59:48 JST 2010
Unable to load the repository http://dl-ssl.google.com/android/eclipse/

org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: No repository found at http://dl-ssl.google.com/android/eclipse/.
at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:380)
at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:606)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:88)
at org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil.loadMetadataRepository(ProvisioningUtil.java:88)
at org.eclipse.equinox.internal.provisional.p2.ui.QueryableMetadataRepositoryManager.doLoadRepository(QueryableMetadataRepositoryManager.java:55)
at org.eclipse.equinox.internal.provisional.p2.ui.QueryableRepositoryManager.loadRepository(QueryableRepositoryManager.java:195)
at org.eclipse.equinox.internal.provisional.p2.ui.QueryableRepositoryManager.loadAll(QueryableRepositoryManager.java:108)
at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.run(PreloadingRepositoryHandler.java:71)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

1 件のコメント: