【发布时间】:2015-06-29 01:34:17
【问题描述】:
我正在关注this tutorial 并进行了一些修改。我按照类中的说明进行操作,它的继承名为AndroidMultiPartEntity extends MultipartEntity。
我添加了以下jar文件:
- mime4j
- httpclient-android-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)
谁能帮我确定我做错了什么?
UPDATE 来自 .classpath 文件的信息:<?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>
【问题讨论】:
-
如果您使用的是 Eclipse,请显示您的 .classpath,如果您使用的是 Studio,请显示 build.gradle
-
添加了@HarishSridharan。这些文件的具体用途是什么?
-
.classpath 文件负责您的 ant 编译器,以提供有关您项目的整体信息。编译器在编译时使用这些信息来获取此处定义的源文件和依赖项。只有标记为exported=true 的库将与您的apk 一起打包,而其他引用将仅在编译时由编译器使用,编译器将假定这些库(未标记为exported=true)将由提供默认的 android 系统或运行时任何来自源的系统,并且不会与您的 apk 一起打包。