以下工件无法解析:javax.jms:jms:jar:1.1


77

我正在尝试编译一个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]

我知道有关Sun jars的这一行家文章,但并不能解决问题。

我可以在其中指定一个存储库pom.xml吗?

Answers:


83

感谢您的建议。我终于找到了解决这个问题后阅读。事实证明,这些依赖关系来自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>

2
好的解决方法。我今天有一个与log4j依赖项相同的问题。看起来maven-repository.dev.java.net/nonav/repository可能具有无效的证书(当我点击该URL时,Chrome会警告我)。我认为那是那些部门托管的服务器。
詹姆斯·库珀

我也收到SSL证书警告,但后来意识到这是因为该域不存在。这是因为有OpenDNS及其默认的后备页面。
史蒂夫·布佐纳斯

4
看起来瞬态依赖log4j:log4j:1.2.15正在拉那些奇怪的依赖。从zookeeper依赖项中排除log4j,并自己包括更新版本的log4j似乎也可以解决此问题。
JeroenHoek

1
@JamesCooper检查此(unitstep.net/blog/2009/05/18/…)。它解释了log4j问题。
smwikipedia

61

如果有人仍然想使用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)


您是否将此放在<repositories>部分?对于我来说,这没有帮助。
haridsv 2011年

我将存储库放置在“用户设置” settings.xml中,但它也对我没有帮助。
2012年

对我来说,它给了这个错误。找不到工件org.jboss.com.sun.httpserver:httpserver:jar:1.0.0.Final in java.net ......当我将存储库更改为jboss时现在..谢谢
Dhrumil Shah

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>

.....

14

如果您不想修改设置,则可以使用另一种解决方案:

从JBoss存储库下载jms-1.1.jar,然后:

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


它一直在编译项目。谢谢。一个问题:如果删除.m2文件夹,则必须再次发出此命令。我对吗?
hephestos

如果删除.m2文件夹,是否必须再次发出此命令?<<是的。mvn install会将工件复制到本地mvn存储库中。
阿德里安Deccico

3

尝试使用mvncpu选项强制进行更新:

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

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

使用-cpu不太好。这就是为什么“不建议使用命令行选项-cpu并将在以后的Maven版本中将其删除”的原因。
霸主2012年

3

实际上,此问题的真正解决方案是使用Maven Central上可用的jms-api-1.1-rev-1.jar工件:http ://search.maven.org/#artifactdetails%7Cjavax.jms%7Cjms-api% 7C1.1-rev-1%7Cjar


如果您的项目依赖JMS,我认为这是最好的解决方案。正如您所期望的那样,您也可以通过这种方式将MMS的分辨率委托给Maven。
danidemi 2014年

简单的解决方案。无需添加新的存储库。
downeyt

3

当我开始在项目中为log4j(1.2.15)使用以下Maven依赖版本时,我也遇到了相同的问题。

<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>

2

iblibliojava.net存储库的检查表明,两者中都不存在与jmx相关的jar。我认为您应该手动下载jms并按照此处的讨论本地安装它们。


我同意。这解决了大多数问题。浏览jarvana.com并在“项目”字段中输入您要查找的jar的groupId:artifactId。如果找不到该文件,则可以检查pom并尝试找出可以从哪里下载文件(请参见此处的downloadUrl:jarvana.com/jarvana/inspect-pom/com/sun/jdmk/jmxtools/1.2.1)。 /…)。一旦你下载使用以下命令:MVN安装:安装文件-DgroupId = groupIdOfJar -DartifactId = artifactIdOfJar -Dversion = versionOfJar -Dpackaging =罐子-Dfile = “pathToJar.jar” -DgeneratePom =真
霸气

还可以在此处查看不同的存储库:docs.codehaus.org/display/MAVENUSER/Mirrors+Repositories以及Maven的镜像和存储库指南:maven.apache.org/guides/mini/guide-mirror-settings.html
专案

0

您导入一个依赖项,并且此依赖项依赖于另一个依赖项,com.sun.jmx:jmxri:jar:1.2.1但是com.sun.jmx:jmxri:jar:1.2.1在中央存储库中找不到,

因此,您最好尝试导入另一个版本。

在这里,假设您的依赖关系可能是log4j,并且可以尝试import log4j:log4j:jar:1.2.13


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.