org.apache.commons.io.FileUtils
静的メソッドを使用して、文字列内の値をローカルシステム上のファイルに保存しようとしていますwriteStringToFile
。
そのため、最初にcommons-io-2.4.jarをそのjavadocsとソースとともにダウンロードし、Javaビルドパスを介してEclipseプロジェクトにインポートしました。すべてが正常にコンパイルされます。
ただし、単純な行を追加すると、次のようになります。
org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File(Environment.getExternalStorageDirectory().toString() + "/logt.txt"), rslt.toString());
プログラムがクラッシュします。しかし、そのステートメントの近くではクラッシュしません。代わりに、この関数を呼び出すメソッドを含むオブジェクトのコンストラクターでクラッシュします。
言い換えると
- コードの前半で、オブジェクトTranslateTaskを作成しました。
- これには、関数呼び出しdoTranslate()が含まれています。
- writeStringToFile呼び出しは、doTranslate()呼び出し内で行われます。
- ただし、TranslateTaskオブジェクトをインスタンス化すると、実際のクラッシュが発生します。
- しかし、writeStringToFile()の呼び出しをコメントアウトすると、クラッシュは発生しません。
- doTranslate()呼び出しではクラッシュは発生しませんが...
- したがって、writeStringToFile()に言及するだけで、それを含むオブジェクトをインスタンス化すると、プログラムがクラッシュします。
それをより簡単にするために、私はTry, catch (RejectedExecutionException e)
ブロック内のオブジェクトをインスタンス化しますが、代わりにプログラムはこの部分でクラッシュします:
PathClassLoader.findClass(String) line: 243 **Last call in the stack**
PathClassLoader(ClassLoader).loadClass(String, boolean) line: 573
PathClassLoader(ClassLoader).loadClass(String) line: 532
Translate$4.run() line: 159 **Crash happens here where I instantiate a TranslateTask object**
したがって、PathClassLoader...これをデバッグする方法がわかりません。私が知っているのは、org.apache.commons.io.FileUtils.writeStringToFile()
呼び出しを称賛した場合、エラーが発生することはなく、コードはどこでも正常に実行されるということだけです。
Eclipse Indigoを使用して、AndroidのAPI8/10でこれを実行します。
編集-Logcat:
08-07 18:40:11.409:I / System.out(1395):デバッガーが解決しました(1363)
08-07 18:40:14.399:W / KeyCharacterMap(1395):ID0のキーボードがありません
08-07 18:40:14.399:W / KeyCharacterMap(1395):デフォルトのキーマップを使用:/system/usr/keychars/qwerty.kcm.bin
ヒントが得られるとは思わないが、デバッガーが落ち着いた後にlogcatが提供するのはこれだけです。
EDIT2-良い意味で、私はちょうど追加しました
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
が、それでも行きません
編集3-apachecommons-io-2.4.jarはAndroidでは本質的に機能しないと思い始めています。それでいいの?
EDIT4-誰かがそれをクラックしたい場合に備えて、ここに私のコードがあります。これは、Windows 7、EclipseIndigoで作成されています。コードは「HelloAndroid」の翻訳セクションに基づいています。私がやろうとしているのは、JSONを文字列に抽出し、SDカードに保存することだけです。しかし、ここではこの謎に進化しています... https://dl.dropbox.com/u/10790286/Translate.zip(TranslateTask.javaの111行目を参照)
EDIT5-興味深いアップデート。デバッグ中に手動でFileUtils.writeStringToFile(new java.io.File("/mnt/sdcard/logt.txt"), "test");
日食式ボックスに入れると、次のエラーが発生します
例外が発生しました:java.lang.NoSuchMethodError
1)WriteStringToFile()関数がcommons-ioソースにあるため、なぜこのエラーが発生するのかわかりません。2)FileUtilsオブジェクトをインスタンス化できます。3)プログラムにインポートしました。
何が起きてる?