热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java.lang.NoSuchFieldError:org.apache.http.message.BasicHeaderValueFormatter.INSTANCEandroid

如何解决《java.lang.NoSuchFieldError:org.apache.http.message.BasicHeaderValueFormatter.INSTANCEandroid》经验,为你挑选了1个好方法。

尝试使用以下代码上传大型视频,但收到此错误<java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE>.我猜它是由于多个类路径而发生的,但是如何在eclipse中纠正.为此,我使用了http://hc.apache.org/downloads.cgi.have中的jar文件,仅包含httpclient-4.4.jar,httpcore-4.4.jar,httpsime-4.4.jar.

public class MainActivity extends ActionBarActivity {
    int SELECT_VIDEO = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     

        Intent intent = new Intent();
        intent.setType("video/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select a Video "), SELECT_VIDEO);       
    }


    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_VIDEO) {
                System.out.println("SELECT_VIDEO");
                Uri selectedVideoUri = data.getData();
                String selectedPath = getPath(selectedVideoUri);
                System.out.println("SELECT_VIDEO Path : " + selectedPath);
                try {
                    uploadVideo(selectedPath);
                } catch (ParseException | IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }      
        }
    }

    private String getPath(Uri uri) {
        String[] projection = { MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION}; 
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        cursor.moveToFirst(); 
        String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
        int fileSize = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
        long duration = TimeUnit.MILLISECONDS.toSeconds(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)));
         return filePath;
    }


    @SuppressWarnings("deprecation")
    private void uploadVideo(String videoPath) throws ParseException, IOException {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("URL");

        FileBody filebodyVideo = new FileBody(new File(videoPath));
        StringBody title = new StringBody("Filename: " + videoPath);
        StringBody description = new StringBody("This is a description of the video");

        MultipartEntity reqEntity = new MultipartEntity();
        reqEntity.addPart("videoFile", filebodyVideo);
        reqEntity.addPart("title", title);
        reqEntity.addPart("description", description);
        httppost.setEntity(reqEntity);

        // DEBUG
        System.out.println( "executing request " + httppost.getRequestLine( ) );
        HttpResponse respOnse= httpclient.execute( httppost );
        HttpEntity resEntity = response.getEntity( );

        // DEBUG
        System.out.println( response.getStatusLine( ) );
        if (resEntity != null) {
          System.out.println( EntityUtils.toString( resEntity ) );
        } // end if

        if (resEntity != null) {
          resEntity.consumeContent( );
        } // end if

        httpclient.getConnectionManager( ).shutdown( );
    } // end of uploadVideo( )

}

logcat的:

02-16 14:16:18.421: E/AndroidRuntime(20632): Process: com.example.testingandroid, PID: 20632
02-16 14:16:18.421: E/AndroidRuntime(20632): java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.entity.ContentType.toString(ContentType.java:153)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.entity.mime.MultipartFormEntity.(MultipartFormEntity.java:52)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:226)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.entity.mime.MultipartEntity.getEntity(MultipartEntity.java:119)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.entity.mime.MultipartEntity.getContentType(MultipartEntity.java:150)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.impl.client.AbstractHttpClient.isMoMMS(AbstractHttpClient.java:757)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:581)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:511)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:489)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at com.example.testingandroid.MainActivity.uploadVideo(MainActivity.java:162)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at com.example.testingandroid.MainActivity.onActivityResult(MainActivity.java:113)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.app.Activity.dispatchActivityResult(Activity.java:5456)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3549)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3596)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.app.ActivityThread.access$1300(ActivityThread.java:151)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.os.Handler.dispatchMessage(Handler.java:110)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.os.Looper.loop(Looper.java:193)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at android.app.ActivityThread.main(ActivityThread.java:5292)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at java.lang.reflect.Method.invokeNative(Native Method)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at java.lang.reflect.Method.invoke(Method.java:515)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
02-16 14:16:18.421: E/AndroidRuntime(20632):    at dalvik.system.NativeStart.main(Native Method)

Tejas Sherdi.. 8

您的代码可以摆脱已弃用的代码MultipartEntity和使用MultipartEntityBuilder.然而,这里涉及的具体问题是核心Android库与新添加的库冲突.现在还有maven存储库可用.您可以在以下文件中包含以下代码:

build.grade(模块:app)

compile('org.apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'

这种方式非常简单.由于奥列格的答案在这里



1> Tejas Sherdi..:

您的代码可以摆脱已弃用的代码MultipartEntity和使用MultipartEntityBuilder.然而,这里涉及的具体问题是核心Android库与新添加的库冲突.现在还有maven存储库可用.您可以在以下文件中包含以下代码:

build.grade(模块:app)

compile('org.apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'

这种方式非常简单.由于奥列格的答案在这里


推荐阅读
  • 本文提供了一个Android应用中用于抓取网页信息并下载图片的示例代码。通过该代码,开发者可以轻松实现从指定URL获取网页内容及其中的图片资源。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • 图神经网络模型综述
    本文综述了图神经网络(Graph Neural Networks, GNN)的发展,从传统的数据存储模型转向图和动态模型,探讨了模型中的显性和隐性结构,并详细介绍了GNN的关键组件及其应用。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置单节点的Redis服务,包括下载、解压、编译安装以及启动服务的具体步骤。 ... [详细]
  • 本文详细介绍了如何通过配置 Chrome 和 VS Code 来实现对 Vue 项目的高效调试。步骤包括启用 Chrome 的远程调试功能、安装 VS Code 插件以及正确配置 launch.json 文件。 ... [详细]
  • 作为一名CSS初学者,我在博客园中尝试通过CSS美化页面,特别是为超链接添加图标,以提升阅读体验。本文将分享如何使用CSS和字体图标库来实现这一功能。 ... [详细]
  • 本文主要解决了在编译CM10.2时出现的关于Samsung Exynos 4 HDMI HAL库中SecHdmiV4L2Utils.cpp文件的编译错误。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 解决宝塔面板Nginx反向代理缓存问题
    本文介绍如何在宝塔控制面板中通过编辑Nginx配置文件来解决反向代理中的缓存问题,确保每次请求都能从服务器获取最新的数据。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 1<table>2<tr>3<th>ID<th>4 ... [详细]
  • 本文章利用header()函数来实现页面跳,我们介绍到404,302,301等状态跳转哦,下面有很多的状态自定的函数有需要的同学可以测试一下。heade ... [详细]
author-avatar
uai_128366833952
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有