我需要编译这个项目:https://github.com/boatmeme/microsoft-translator-java-api
我在eclipse中创建了一个名为“”的项目,并将从"com“文件夹开始的所有该项目文件复制到我的新项目的src文件夹中。一切正常,但我有一些错误,说明我需要一个名为“json”的依赖库,然后我转到这里:http://code.google.com/p/json-simple/downloads/list并下载最新版本(1.1.1)并通过右键单击我的项目并单击“构建路径”,然后单击“添加外部存档”并将其导入到我的项目中.现在一切都好,我没有任何错误.
现在,我需要创建一个jar文件。为此,我右键单击我的项目,然后单击“导出”,然后从列表中选择java->jar文件,单击next,选择我的项目并取消选中右侧面板上的.classpath和.project,然后单击finish并创建我的.jar文件.
我需要这个文件在我的android项目,当包括这个文件在我的项目和运行项目,我得到错误。这是我的逻辑猫:
01-23 11:44:41.016: E/AndroidRuntime(285):致命异常: android.os.AsyncTask$3.done(AsyncTask.java:200) #1 01-23 11:44:41.016: E/AndroidRuntime(285):java.lang.RuntimeException:执行doInBackground() 01-23 11:44:41.016: 41.016: E/AndroidRuntime(285):at java.util.concurrent.FutureTask$Sync 01-23 11:44:41.016: E/AndroidRuntime(285):at java.util.concurrent.FutureTask$Syncjava.util.concurrent.FutureTask.setException(FutureTask.java:124) 01-23 11:44:41.016: E/AndroidRuntime(285):at .innerSetException 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):在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引起: java.lang.NoClassDefFoundError: org.json.simple.JSONValue 01-23 11:44:41.016: E/AndroidRuntime(285):at java.lang.NoClassDefFoundError 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):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):at android.os.AsyncTask.java$2.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):.
当我使用预编译版本的“”时,一切正常,项目完美地工作。但我自己编的不是..。
您可以在这里找到预编译的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)语言并重新编译它.但对我不起作用。ineed这个项目:https://github.com/boatmeme/microsoft-translator-android-test
修改后的language.java文件.请帮帮我。谢谢
发布于 2013-01-23 08:43:57
从日志中可以看出,存在一个NoClassDefFoundError,这意味着Java无法在运行时找到在编译期间可用的类。
json-simple是在编译时包含的,而不是在运行时包含的。org.json.simple项目被打包在预编译的jar中。
因此,要么配置Eclipse构建一个可运行的jar,该jar应该将所需的库打包到jar中,要么为jar创建一个Manifest,并使用类路径头添加依赖项。
使用Java反编译器将下载的二进制文件与已编译的jar进行比较也可能是有用的,这将清楚地显示不同之处。
https://stackoverflow.com/questions/14475353
复制相似问题