我正在开发一个可以将视频发送到php服务器的java应用程序。 我在android上完成了它,下面的代码在android上运行完美但是现在当我在纯java(不是android)中尝试这个代码时,我得到了异常。 这是我将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)
很明显,它没有找到类的例外但我该如何修复它。
谢谢
答案 0 :(得分:1)
您使用的是已弃用的类DefaultHttpClient
。这是它的API Documentation。正如您所看到的,它被标记为已弃用,他们建议改为使用HttpClientBuilder
。
使用不推荐的类调用需要日志工厂的父类(也已弃用)。我假设你的类路径中没有安装apache.commons.logging
jar,因此你得到了这个特殊的异常。
最好使用HttpClientBuilder
,而不是安装日志jar。
它在android上运行的原因是因为你可能在那里有一个旧版本的apache HttpClient库。
以下是新Apache HTTP Components library的链接,包括所有文档和下载。
答案 1 :(得分:1)
只需将此jar文件apache.commons.logging
添加到您的项目中即可完成
答案 2 :(得分:0)
哦,你只需添加
apache.commons.logging jar
进入你的项目。 傻