Java 如何使用简单的HttpClient示例下载文件?

Java 如何使用简单的HttpClient示例下载文件?,java,apache-httpclient-4.x,Java,Apache Httpclient 4.x,我是Java和HttpClient新手,我正在尝试从Dropbox文件进行简单下载,但我只得到以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:187)

我是Java和HttpClient新手,我正在尝试从Dropbox文件进行简单下载,但我只得到以下异常:

Exception in thread "main" 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 downlaodtest.DownlaodTest.main(DownlaodTest.java:23)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 3 more
Java Result: 1

我想你必须添加下面的行来保存你的文件

response.addHeader(“Content-Disposition”, “attachment;filename=\”" + file.getName() + “\”");
response.addHeader(“Content-Transfer-Encoding”, “binary”);`
response.setContentType(“application/octet-stream”);`
response.setContentLength((int) file.length());`
response.getOutputStream().write(buffer);`
response.getOutputStream().flush();`

我想你必须添加下面的行来保存你的文件

response.addHeader(“Content-Disposition”, “attachment;filename=\”" + file.getName() + “\”");
response.addHeader(“Content-Transfer-Encoding”, “binary”);`
response.setContentType(“application/octet-stream”);`
response.setContentLength((int) file.length());`
response.getOutputStream().write(buffer);`
response.getOutputStream().flush();`

如果我将文件路径更改为有效路径并将它所需的所有库添加到类路径中,那么它在我的机器上就可以正常工作

String filePath = "d:\\test.zip";
图书馆:

commons-codec-1.6.jar
commons-logging-1.1.1.jar
fluent-hc-4.2.3.jar
httpclient-4.2.3.jar
httpclient-cache-4.2.3.jar
httpcore-4.2.2.jar
httpmime-4.2.3.jar

如果我将文件路径更改为有效路径并将它所需的所有库添加到类路径中,那么它在我的机器上就可以正常工作

String filePath = "d:\\test.zip";
图书馆:

commons-codec-1.6.jar
commons-logging-1.1.1.jar
fluent-hc-4.2.3.jar
httpclient-4.2.3.jar
httpclient-cache-4.2.3.jar
httpcore-4.2.2.jar
httpmime-4.2.3.jar

首先,如果您是Java新手,那么必须学习如何管理Java依赖项

要么下载带有依赖项的二进制发行版并将它们全部复制到项目中并添加到Eclipse,要么学习使用maven

例如,添加依赖项:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.0-alpha4</version>
</dependency>

org.apache.httpcomponents
httpclient
4.0-4

maven正在为您做其他一切(下载所有依赖项及其依赖项)。

首先,如果您是Java新手,您必须学习如何管理Java依赖项

要么下载带有依赖项的二进制发行版并将它们全部复制到项目中并添加到Eclipse,要么学习使用maven

例如,添加依赖项:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.0-alpha4</version>
</dependency>

org.apache.httpcomponents
httpclient
4.0-4

maven正在为您做其他一切(下载所有依赖项及其依赖项)。

“不工作”。除非你不是程序员,否则这是一个不可接受的问题描述。诀窍是读取异常
ClassNotFoundException
表示它找不到类
org.apache.commons.logging.LogFactory
是它找不到的类。因为它位于apache commons httpclient所依赖的另一个.jar文件中。“不工作”。除非你不是程序员,否则这是一个不可接受的问题描述。诀窍是读取异常
ClassNotFoundException
表示它找不到类
org.apache.commons.logging.LogFactory
是它找不到的类。因为它位于apache commons httpclient所依赖的另一个.jar文件中。那么问题可能是因为您的系统无法连接到给定的站点,或者您无权连接。让我重新表述一下:他的代码可以正常工作。只有文件路径是错误的。那么问题可能是因为您的系统无法连接到给定的站点,或者您无权这样做。让我重新表述一下:他的代码可以正常工作,没有任何更改。只有文件路径错误。您遇到了什么错误?(你应该选择一个在你的机器上有效的路径。)你得到了什么错误?(您应该选择一个在您的计算机上有效的路径。)