9

アプリを 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 に入れるために使用できる回避策はありますか?

4

2 に答える 2

1

これは、現時点ではかなり古いバージョンの intellij です。10.5 は、Android dev に関する私の問題をすべて解決しているようです

于 2011-08-17T15:42:02.420 に答える
0

あなたの問題はあなたの依存関係の範囲ではありませんか? それらがコンパイルにのみ使用されている場合、ランタイムでの動作は保証されていませんか?

私自身は IJ のユーザーではありませんが、あなたのスクリーンショットからそう推測します。また、Android パッケージのサイズが 80% 小さい理由も説明できます。

于 2011-05-10T09:45:20.720 に答える