2011-02-05 51 views
70

我試圖編譯Maven項目,但我係統地收到以下錯誤消息:下面的文物無法解析:的javax.jms:JMS:罐子:1.1

[ERROR]Failed to execute goal on project ...: 
Could not resolve dependencies for project ...:war:1.0.0: 
The following artifacts could not be resolved: javax.jms:jms:jar:1.1, 
com.sun.jdmk:jmxtools:jar:1.2.1, com.sun.jmx:jmxri:jar:1.2.1: 
Failure to find javax.jms:jms:jar:1.1 in http://mirrors.ibiblio.org/maven2/ 
    was cached in the local repository, resolution will not be reattempted until 
    the update interval of maven2-repository.ibiblio.mirror has elapsed or 
    updates are forced -> [Help 1] 

我知道this maven post about Sun jars,但它不能解決問題。

有沒有人有解決方案?有沒有我可以在我的pom.xml中指定的存儲庫?

謝謝!

回答

74

感謝您的建議。我在閱讀this後終於找到了解決這個問題的辦法。事實證明,這些依賴關係來自ZooKeeper的依賴關係。

我修改的pom.xml如下,它解決了這個問題:

<dependency> 
     <groupId>org.apache.zookeeper</groupId> 
     <artifactId>zookeeper</artifactId> 
     <version>3.3.2</version> 
     <exclusions> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+1

良好的解決方法。我今天有一個與log4j依賴關係相同的問題。它看起來像https://maven-repository.dev.java.net/nonav/repository也許有一個無效的證書(當我打那個url時,Chrome給了我一個很大的警告)。這是我認爲託管的服務器。 – 2011-05-03 01:34:12

+0

我也收到SSL證書警告,但意識到這是因爲該域不存在。這是因爲OpenDNS及其默認回退頁面。 – 2012-06-07 03:33:55

+4

它看起來像臨時依賴`log4j:log4j:1.2.15`正在拉動那些奇怪的依賴關係。從動物園管理員依賴項中排除log4j,並且包含更新版本的log4j似乎也能解決這個問題。 – JeroenHoek 2013-12-05 12:31:44

3

使用MVN cpu選項嘗試強制更新:

usage: mvn [options] [<goal(s)>] [<phase(s)>] 

Options: 
-cpu,--check-plugin-updates   Force upToDate check for any 
             relevant registered plugins 
+0

它不太好用-cpu。這就是爲什麼「命令行選項-cpu已被棄用,並將在未來的Maven版本中被刪除。」 – despot 2012-01-29 12:44:28

2

iblibliojava.net庫的檢查表明,JMX相關的jar不存在在任。我認爲你應該手動下載jms並在本地安裝,如討論here

+0

我同意。這解決了大部分問題。瀏覽jarvana.com和項目字段類型groupId:你正在尋找的jar的artifactId。如果找不到文件,請檢查pom並嘗試找出可以從哪裏下載(請參閱downloadUrl:http://jarvana.com/jarvana/inspect-pom/com/sun/jdmk/jmxtools /1.2.1/jmxtools-1.2.1.pom)。一旦你下載使用下面的命令:mvn install:install-file -DgroupId = groupIdOfJar -DartifactId = artifactIdOfJar -Dversion = versionOfJar -Dpackaging = jar -Dfile =「pathToJar.jar」-DgeneratePom = true – despot 2012-01-29 13:13:34

+0

也可以在這裏查看不同的軟件倉庫:http://docs.codehaus.org/display/MAVENUSER/Mirrors+Repositories Maven的鏡像和存儲庫指南:http://maven.apache.org/guides/mini/guide-mirror-settings.html – despot 2012-01-29 13:52:14

52

如果有人希望繼續使用JMS1.1然後添加公共JBoss的存儲庫和Maven會找到它...

項目 - >依賴關係:

<dependencies> 
    <dependency> 
     <groupId>javax.jms</groupId> 
     <artifactId>jms</artifactId> 
     <version>1.1</version> 
    </dependency> 

項目 - >存儲庫:

<repositories> 
    <repository> 
     <id>repository.jboss.org-public</id> 
     <name>JBoss.org Maven repository</name> 
     <url>https://repository.jboss.org/nexus/content/groups/public</url> 
    </repository> 

它的工作原理 -

F:\mvn-repo-stuff>mvn verify 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building mvn-repo-stuff 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://repo1.maven.org/maven2/javax/jms/jms/1.1/jms-1.1.pom 
Downloaded: http://repo1.maven.org/maven2/javax/jms/jms/1.1/jms-1.1.pom (677 B at 0.8 KB/sec) 
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2 
Downloading: http://repo1.maven.org/maven2/javax/jms/jms/1.1/jms-1.1.jar 
Downloading: https://repository.jboss.org/nexus/content/groups/public/javax/jms/jms/1.1/jms-1.1.jar 
Downloaded: https://repository.jboss.org/nexus/content/groups/public/javax/jms/jms/1.1/jms-1.1.jar (26 KB at 8.5 KB/sec) 
12

,如果你不希望修改您的設置另一種解決方案:

下載jms-1.1.jar from JBoss repository則:

mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar -Dfile=jms-1.1.jar

0

您導入一個相關性,這種依賴性取決於com.sun.jmx:jmxri:jar:1.2.1等,但在中央存儲庫中找不到com.sun.jmx:jmxri:jar:1.2.1

所以你最好試着導入另一個版本。

這裏假設您的依賴關係可能是log4j,您可以嘗試導入log4j:log4j:jar:1.2.13

21

Log4版本1.2.17自動解決了這個問題,因爲它依賴於geronimo-jms。我在log4j-1.2.15版本中遇到了同樣的問題。


更添周圍使用1.2問題


。17在編譯期間解決了這個問題,但服務器(Karaf)使用1.2.15版本,從而在運行時產生衝突。因此我不得不切換回1.2.15。

JMS和JMX API在運行時可用,因此我沒有導入J2ee API。

我所做的是我使用了編譯時依賴1.2.17,但在運行時刪除它。

  <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
.... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> 
                  <Import-Package>!org.apache.log4j.*,*</Import-Package> 

..... 
0

未必是完全一樣的問題。但在同一行上有一篇不錯的文章Here