没有Class Def Found错误android项目上传图片

时间:2015-06-29 01:34:18

标签: java android eclipse

我正在关注this tutorial进行一些修改。我按照课程中的说明进行操作,并将其称为AndroidMultiPartEntity extends MultipartEntity

我添加了以下jar文件:

  • mime4j
  • 的HttpClient-机器人-4.3.3
  • 的HttpCore
  • httpmime

其中一些罐子是出于绝望而添加的,以消除错误但是我仍然在我的logcat中收到此错误:

  

由java.lang.NoClassDefFoundError引起:package_name.AndroidMultiPartEntity

logcat的输出:

06-29 01:25:05.720: E/AndroidRuntime(1770): FATAL EXCEPTION: AsyncTask #2
06-29 01:25:05.720: E/AndroidRuntime(1770): java.lang.RuntimeException: An error occured while executing doInBackground()
06-29 01:25:05.720: E/AndroidRuntime(1770):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.lang.Thread.run(Thread.java:856)
06-29 01:25:05.720: E/AndroidRuntime(1770): Caused by: java.lang.NoClassDefFoundError: com.inc.automata.malawiscenery.util.AndroidMultiPartEntity
06-29 01:25:05.720: E/AndroidRuntime(1770):     at com.inc.automata.malawiscenery.UploadPictureActivity$UploadToServer.uploadFile(UploadPictureActivity.java:390)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at com.inc.automata.malawiscenery.UploadPictureActivity$UploadToServer.doInBackground(UploadPictureActivity.java:359)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at com.inc.automata.malawiscenery.UploadPictureActivity$UploadToServer.doInBackground(UploadPictureActivity.java:1)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-29 01:25:05.720: E/AndroidRuntime(1770):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

任何人都可以帮我确定我做错了什么吗? 来自.classpath文件的 UPDATE 信息:
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> <classpathentry exported="true" kind="lib" path="libs/volley.jar"/> <classpathentry exported="true" kind="lib" path="libs/gson-2.2.4.jar"/> <classpathentry exported="true" kind="lib" path="libs/metadata-extractor-2.6.4.jar"/> <classpathentry exported="true" kind="lib" path="libs/android-support-v4.jar"/> <classpathentry kind="lib" path="libs/httpmime-4.1.1.jar"/> <classpathentry kind="lib" path="libs/httpclient-android-4.3.3.jar"/> <classpathentry kind="lib" path="libs/httpcore-4.0.1.jar"/> <classpathentry kind="lib" path="libs/mime4j-0.2.jar"/> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> <classpathentry kind="output" path="bin/classes"/> </classpath>

1 个答案:

答案 0 :(得分:0)

为所有新添加的库添加exported =“true”,如下所示。您的应用程序只有这些库的编译引用,但在运行时没有,因为您没有标记它 exported = true 。所以这些库在运行时不可用,导致NoClassDefFoundError。

<?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
        <classpathentry exported="true" kind="lib" path="libs/volley.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/gson-2.2.4.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/metadata-extractor-2.6.4.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/android-support-v4.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/httpmime-4.1.1.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/httpclient-android-4.3.3.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/httpcore-4.0.1.jar"/>
        <classpathentry exported="true" kind="lib" path="libs/mime4j-0.2.jar"/>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="gen"/>
        <classpathentry kind="output" path="bin/classes"/>
    </classpath>