我正在尝试编译maven项目,但我系统地收到以下错误消息:
[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中指定一个存储库吗?
谢谢!
答案 0 :(得分:77)
感谢您的建议。阅读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 :(得分:57)
如果有人还想使用jms1.1,那么添加公共jboss存储库,maven会找到它...
项目 - &GT;依赖关系:
<dependencies>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
<version>1.1</version>
</dependency>
项目 - &GT;库:
<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)
答案 2 :(得分:23)
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>
.....
答案 3 :(得分:13)
如果您不想修改设置,则为另一种解决方案:
然后下载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
答案 4 :(得分:3)
尝试使用mvn cpu
选项强制更新:
usage: mvn [options] [<goal(s)>] [<phase(s)>]
Options:
-cpu,--check-plugin-updates Force upToDate check for any
relevant registered plugins
答案 5 :(得分:3)
事实上,这个问题的真正解决方案是使用Maven Central上提供的jms-api-1.1-rev-1.jar工件:http://search.maven.org/#artifactdetails%7Cjavax.jms%7Cjms-api%7C1.1-rev-1%7Cjar
答案 6 :(得分:2)
对ibliblio
和java.net
存储库的检查显示,两者中都没有与jmx相关的jar。我认为您应该手动下载jms并按照here所述在本地安装它们。
答案 7 :(得分:1)
当我在项目中开始将以下Maven依赖版本用于log4j(1.2.15)时,我也遇到了同样的问题。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
以下错误向我抛出。
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: Could not transfer artifact javax.jms:jms:jar:1.1 from/to java.net (https://maven-repository.dev.java.net/nonav/repository): Cannot access https://maven-repository.dev.java.net/nonav/repository with type legacy using the available connector factories: BasicRepositoryConnectorFactory: Cannot access https://maven-repository.dev.java.net/nonav/repository with type legacy using the available layout factories: Maven2RepositoryLayoutFactory: Unsupported repository layout legacy -> [Help 1]
我开始使用以下log4j(1.2.17)版本,它帮助我解决了此问题,而没有任何与配置有关的修复程序。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
答案 8 :(得分:0)
您导入一个依赖项,此依赖项依赖于com.sun.jmx:jmxri:jar:1.2.1
和其他依赖项,但在中央存储库中找不到com.sun.jmx:jmxri:jar:1.2.1
,
所以你最好尝试导入另一个版本。
这里假设你的依赖关系可能是log4j,你可以尝试导入log4j:log4j:jar:1.2.13
。
答案 9 :(得分:0)
可能不是完全相同的问题。但在同一行Here
上有一篇很好的文章