2016-07-04 226 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

相關問題