アプリを Eclipse から IntelliJ に移植しようとしています。アプリは正常にビルドされますが、正しく実行されません。
これは、私が受け取った部分的なスタック トレースです。
ERROR/AndroidRuntime(957):
java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: dalvik.system.PathClassLoader@43761190
at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:209)
at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123)
at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82)
at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:439)
at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:393)
at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:114)
at org.joda.time.chrono.GregorianChronology.<clinit>(GregorianChronology.java:71)
at org.joda.time.chrono.ISOChronology.<clinit>(ISOChronology.java:66)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:97)
at org.joda.time.DateTime.<init>(DateTime.java:120)
モジュールのビルド パスで指定されているにもかかわらず、何らかの理由でアプリが joda-time リソースを見つけることができません。これらは、アプリケーションの Eclipse バージョンで使用されるものと同じ jar ファイルです。
代替テキスト http://img.skitch.com/20091106-pgqujbb5eaeqc2wfiqc2c1p39a.png
IntelliJ ツールによってビルドされた APK は、Eclipse によってビルドされたものよりも約 20% 小さくなっていますが、その理由はわかりません。
何が問題なのですか?
アップデート:
昨日、romain と xav と話しましたが、問題は intellij がリソースを apk にバンドルしていないことのようです。明らかに、aapt は 2 つのパス アプローチを実行します。最初にすべてのクラス ファイルを .dex ファイルにバンドルし、次にすべてのリソース ファイルを個別に apk ファイルのトップ レベルにバンドルします。intellij が欠落しているように見えるのは、この 2 番目のパスです。
回避策として、joda-time jar からすべてのリソース ファイルを unjar し、それらを src ディレクトリに配置するよう提案されました。intellij がそれらを自分のソースの一部であるかのように apk にバンドルし、問題を解決することが期待されていました。ただし、これを行った場合、IntelliJ は apk を作成するときにこれらのファイルを完全に無視しました。
どうしてか分かりません。ビルドするたびにひどく不便ではない、joda-time リソース ファイルを apk に入れるために使用できる回避策はありますか?