2016-07-04 721 views
1

我试图从一个Java程序(用于部署在Heroku上)发送一个简单的HTTP帖子。 我从示范项目here开始。 使用mvn package成功建立项目。maven生成错误:包org.apache.http不存在

然后我用自己的几行代码添加了自己的附加文件TestPost.java,将它添加到pom.xml,并且仍然没有问题。

然后我尝试添加来自this example(减去package行)的HTTP代码,该代码使用Apache HttpClient库。

使用mvn package导致以下错误:

package org.apache.http does not exist 

寻找解决方案后,我试过,包括在pom.xml依赖:

<dependencies> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.5.2</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

我的理解是,这应该强制下载的必需的软件包,但下次编译时不显示下载内容(只是相同的错误),并且该软件包在我的用户.m2 \ repository \文件夹中不可见。

我试图在我的pom.xml的不同点插入这种依赖关系,但没有成功。

为什么不下载apache库?请注意,我是maven的新手。

+2

'org.http.apache.http'不是正确的软件包名称。它是'org.apache.http'。 – Tunaki

回答

0

这里是您应该有的pom.xml,如果确实需要依赖httpclient。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>demo</groupId> 
    <artifactId>httpclient-demo</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>httpclient-demo</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.5.2</version> 
     </dependency> 
    </dependencies> 
</project> 

现在,如果你把你的Java源代码中的src/main/java中,其中src和pom.xml文件是在同一目录下,Maven的解决应该从本地资源库的依赖,并下载它,如果它不已经在那里。您的本地存储库在Maven安装目录的conf/settings.xml中定义。

+0

这解决了它,谢谢!以为我尝试过在pom.xml中的那个位置的依赖关系,但显然不是...... – Andrew

1

AFAIK,没有包叫做org.http.apache.http。但是,有叫org.apache.http

总之,在你的代码中有一个错字,这是编译的原因......不是指定或(maven)下载依赖关系的问题。

+0

对不起,在我身边复制粘贴错误,代码是正确的,但在这里发布的问题没有 - 已更正 – Andrew