2014-11-08 2 views
1

Я разрабатываю приложение Java, которое может отправлять видео на php-сервер. Я сделал это на android, и приведенный ниже код отлично работает на Android, но теперь, когда я пробовал этот код в чистом java (не андроиде), я получил исключение. Это мой Java Desktop код, который загружает видео в PHPОшибка при загрузке видео с java на php-сервер

try { 

     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(
       "http://b....vedioup.php"); 

     FileBody filebodyVideo = new FileBody(new File(Path)); 
     StringBody title = new StringBody("Filename: " + Path); 
     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(); 

    } 

и это вывод в консоли.

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:187) 
at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:146) 
at BlankFoem.uploadFile(BlankFoem.java:351) 

Понятно, что исключение класса не найдено, но как его исправить.

Благодаря

+1

ошибка в основном говорит о недостающем классе, этот класс находится в lib jar. Думаю, вам нужно включить 'apache commons: logging' jar в свой путь класса – Yazan

+0

да @Yazan, вы правы. Спасибо –

ответ

1

Вы используете устаревший класс, DefaultHttpClient. Вот его API Documentation. Как вы можете видеть, оно отмечено как устаревшее, и вместо этого они рекомендуют использовать HttpClientBuilder.

Использование устаревшего класса вызывает родительский класс (также устаревший), требующий фабрики регистрации. Я предполагаю, что баннер apache.commons.logging не установлен в вашем пути к классам, и поэтому вы получаете это конкретное исключение.

Лучше использовать HttpClientBuilder, поскольку они рекомендуют, а не устанавливают баннер для регистрации.

И причина, по которой это работало на Android, было потому, что у вас, вероятно, была более старая версия библиотеки Apache HttpClient.

Ссылка на новый Apache HTTP Components library, включая всю документацию и загрузки.

+1

О да, это все. Огромное спасибо. –

1

просто добавить эту банку файл apache.commons.logging в ваш проект, и вы сделали

0

О человеке нужно просто добавить

apache.commons.logging jar 

в Ваш проект. Silly

Смежные вопросы