0

このプロジェクトをコンパイルする必要があります: https://github.com/boatmeme/microsoft-translator-java-api

Eclipse で「microsoft-translator-java-api」という名前のプロジェクトを作成し、「com」フォルダーから始まるこのプロジェクト ファイルをすべて新しいプロジェクトの src フォルダーにコピーします。すべて問題ありませんが、「json-simple」という依存関係ライブラリが必要であるというエラーがいくつかあります。次に、http ://code.google.com/p/json-simple/downloads/list にアクセスし て最新のものをダウンロードしますバージョン(1.1.1)を選択し、プロジェクトを右クリックしてプロジェクトにインポートし、「ビルドパス」をクリックしてから、「外部アーカイブを追加」をクリックしてプロジェクトにインポートします...すべてが今のところ問題なく、私はエラーはありません...

ここで、jar ファイルを作成する必要があります。これを行うには、プロジェクトを右クリックして「エクスポート」をクリックし、リストからJava-> jarファイルを選択し、次へをクリックしてプロジェクトを選択し、右側のパネルで.classpathと.projectのチェックを外してから、終了をクリックして作成します私の.jarファイル...

Android プロジェクトにこのファイルが必要です。このファイルをプロジェクトに含めてプロジェクトを実行すると、エラーが発生します。これは私のlogcatです:

01-23 11:44:41.016: E/AndroidRuntime(285): 致命的な例外: AsyncTask #1 01-23 11:44:41.016: E/AndroidRuntime(285): java.lang.RuntimeException: doInBackground の実行中にエラーが発生しました() 01-23 11:44:41.016: E/AndroidRuntime(285): android.os.AsyncTask$3.done(AsyncTask.java:200) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.FutureTask.setException(FutureTask.java: 124) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 01-23 11:44:41.016: E/AndroidRuntime( 285): java.util.concurrent.FutureTask.run(FutureTask.java:137) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.ThreadPoolExecutor で。runWorker(ThreadPoolExecutor.java:1068) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 01-23 11:44: 41.016: E/AndroidRuntime(285): java.lang.Thread.run(Thread.java:1096) 01-23 11:44:41.016: E/AndroidRuntime(285): 原因: java.lang.NoClassDefFoundError: org .json.simple.JSONValue 01-23 11:44:41.016: E/AndroidRuntime(285): com.memetix.mst.MicrosoftTranslatorAPI.retrieveResponse(MicrosoftTranslatorAPI.java:161) 01-23 11:44:41.016: E/ AndroidRuntime (285): com.memetix.mst.MicrosoftTranslatorAPI.retrieveString (MicrosoftTranslatorAPI.java:199) 01-23 11:44:41.016: E/AndroidRuntime (285): com.memetix.mst.translate.Translate.execute で(Translate.java:61) 01-23 11:44:41.016: E/AndroidRuntime(285): com.memetix.MicrosoftTranslatorAndroidTestActivity$MyAsyncTask.doInBackground(MicrosoftTranslatorAndroidTestActivity.java:34) 01-23 11:44:41.016: E/AndroidRuntime(285): com.memetix.MicrosoftTranslatorAndroidTestActivity$MyAsyncTask.doInBackground(MicrosoftTranslatorAndroidTestActivity.java:1) 01-23 11: 44:41.016: E/AndroidRuntime(285): android.os.AsyncTask$2.call(AsyncTask.java:185) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent で。 FutureTask$Sync.innerRun(FutureTask.java:305) 01-23 11:44:41.016: E/AndroidRuntime(285): ... 4 もっと見るos.AsyncTask$2.call(AsyncTask.java:185) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) で 01- 23 11:44:41.016: E/AndroidRuntime(285): ... 4 つ以上os.AsyncTask$2.call(AsyncTask.java:185) 01-23 11:44:41.016: E/AndroidRuntime(285): java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) で 01- 23 11:44:41.016: E/AndroidRuntime(285): ... 4 つ以上

「microsoft-translator-java-api」のコンパイル済みバージョンを使用すると、すべて問題なく、プロジェクトは完全に機能します。しかし、自分でコンパイルしたものでは...

ここでコンパイル済みの jar ファイルを見つけることができます: https://github.com/downloads/boatmeme/microsoft-translator-java-api/microsoft-translator-java-api-0.6.1-jar-with-dependencies.jar

これは私のコンパイル済みファイルです: https://dl.dropbox.com/u/15006326/java/microsoft-translator-java-api-0.6.1-jar-with-dependencies.jar

誰でもこれをチェックして助けてもらえますか? 言語 .java ファイルにペルシア語 (fa) 言語を追加して再コンパイルするだけで済みますが、うまくいきません。このプロジェクトが必要です: https://github.com/boatmeme/microsoft-translator-android-test

変更されたlanguage.javaファイルのみ...助けてください。ありがとう

4

1 に答える 1

1

ログから、NoClassDefFoundErrorJavaがコンパイル時に利用可能だったクラスを実行時に見つけることができないことを意味するが存在することがわかります。

json-simpleコンパイル時に含まれていますが、実行時には含まれていません。org.json.simpleプロジェクトは、コンパイル済みのjarファイル内にパックされています

したがって、必要なライブラリをjarにパッケージ化する実行可能なjarを構築するようにEclipseを構成するか、jarのマニフェストを作成し、 Class-Pathヘッダーを使用して依存関係を追加します。

また、 Java Decompilerを使用して、ダウンロードしたバイナリをコンパイル済みのjarと比較すると、違いが明確に示されるので便利な場合があります。

于 2013-01-23T08:43:57.247 に答える