java项目编译问题

时间:2013-01-23 08:33:53

标签: java android jar compilation

我需要编译这个项目: 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):at java.util.concurrent.FutureTask $ Sync.innerSetException(FutureTask.java:273)   01-23 11:44:41.016:E / AndroidRuntime(285):at java.util.concurrent.FutureTask.setException(FutureTask.java:124)   01-23 11:44:41.016:E / AndroidRuntime(285):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:307)   01-23 11:44:41.016:E / AndroidRuntime(285):at java.util.concurrent.FutureTask.run(FutureTask.java:137)   01-23 11:44:41.016:E / AndroidRuntime(285):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)   01-23 11:44:41.016:E / AndroidRuntime(285):at 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):at com.memetix.mst.MicrosoftTranslatorAPI.retrieveString(MicrosoftTranslatorAPI.java:199)   01-23 11:44:41.016:E / AndroidRuntime(285):at 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):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文件... 请帮我。感谢

1 个答案:

答案 0 :(得分:1)

从日志中可以看出,有NoClassDefFoundError表示Java无法在运行时找到编译时可用的类。

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

所以要么配置Eclipse来构建一个 runnable jar ,它应该将所需的库打包到jar中,或者为jar​​创建一个Manifest并使用Class-Path header添加依赖项。

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