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 项目中需要这个文件,当在我的项目中包含这个文件并运行项目时我得到错误。这是我的日志:

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): at 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): at 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): at com.memetix。MicrosoftTranslatorAndroidTestActivity$MyAsyncTask.doInBackground(MicrosoftTranslatorAndroidTestActivity.java:34) 01-23 11:44:41.016: E/AndroidRuntime(285): at 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): at 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): at 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

从日志中可以看出,有一个NoClassDefFoundError意思是Java在运行时找不到一个在编译时可用的类。

json-simple已在编译时包含,但在运行时未包含。该org.json.simple项目被打包预编译的 jar 中。

因此,要么配置 Eclipse 以构建一个可运行的 jar,该 jar 应该将所需的库打包到 jar 中,或者为 jar 创建一个 Manifest 并使用Class-Path 标头添加依赖项。

使用Java Decompiler将下载的二进制文件与您编译的 jar 进行比较也可能很有用,这应该可以清楚地表明差异。

于 2013-01-23T08:43:57.247 回答