【问题标题】:Maven: missing net.sf.json-libMaven:缺少 net.sf.json-lib
【发布时间】:2011-05-09 13:29:59
【问题描述】:

我找到了 net.sf.json-lib in the central repository。复制粘贴依赖项(使用 2.3 版),然后在构建时出现此错误:

[INFO] Unable to find resource 'net.sf.json-lib:json-lib:jar:2.2.3' in repository central (http://repo1.maven.org/maven2)

[ERROR] BUILD ERROR
[INFO] ---------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) net.sf.json-lib:json-lib:jar:2.3

  Try downloading the file manually from the project website.

我尝试使用 2.2.3 版本,但我遇到了同样的错误。为什么我会收到此错误?我可以通过在本地安装来覆盖它,但我想了解问题所在。

编辑 - 我从本地存储库中删除了包,然后重试,这次出现校验和错误。我想我应该使用 json-lib 提交错误报告。

[WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for net/sf/json-lib/json-lib/2.3/json
-lib-2.3.pom - IGNORING

【问题讨论】:

  • 看起来 maven Central 中的文件的校验和不正确...您必须决定是否信任它。

标签: maven-2


【解决方案1】:

查看maven-central repo,需要为这个依赖指定一个分类器。

jdk13 或 jdk15,像这样:

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

【讨论】:

  • 我也有同样的问题。在BuildConfig.groovy,我做:dependencies { runtime group:'net.sf.json-lib', name:'json-lib', version:'2.4', classifier:'jdk15' },但无济于事。我得到Failed to resolve dependency.。知道为什么吗?
  • 对。 search.maven.org/… 对我们撒谎并省略了分类器并没有帮助。
  • 仅供参考,对于那些使用 Play Framework 1.x 的用户,您不能使用来自 maven Central 的这个 jar - play.lighthouseapp.com/projects/57987-play-framework/tickets/…
  • 不错!想知道为什么我最初添加具有 jdk15 的依赖项时没有设置分类器。
  • 常春藤的等价物是什么?
【解决方案2】:

以gradle为样本

编译'net.sf.json-lib:json-lib:2.4:jdk15'

编译组:'net.sf.json-lib',名称:'json-lib',版本:'2.4',分类器:'jdk15'

我搜索了更多的分类器,除了jdk15之外找不到任何东西(不要去找jdk16或jdk17)

【讨论】:

  • 这对我不起作用。我不得不按照@icyrock.com 的建议在本地安装文件,然后在repositories 部分中将mavenLocal() 放在mavenCentral() 之前。
  • 仅用于文档:至少有一个 bug in Gradle 与传递依赖项相关联,据我所知,json-lib 在其 POM 中不提供任何分类器数据(请参阅 @987654322 @ 和 this)。我也找不到方法来确定 Gradle 是否如上所述检查校验和错误。
【解决方案3】:

对于 ivy 用户,在尝试了许多不同的迭代来配置我的 ivy.xml 以正确找到这个依赖项之后,这终于对我有用了:

  <dependency org="net.sf.json-lib" name="json-lib" rev="2.4">
        <artifact name="json-lib" url="http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar"/>     
    </dependency>

【讨论】:

  • 我认为硬连线 URL 不是最佳解决方案,这也适用于 Ivy:
  • @stumbav,这对我不起作用。它给出错误:解析:[[致命错误] ivy.xml:19:137:与元素类型“artifact”关联的属性“maven:classifier”的前缀“maven”未绑定
【解决方案4】:

除非 khimarbaise 对可信度的评论,您可以使用 maven install 在本地安装它:

mvn install:install-file  -Dfile=path-to-your-artifact-jar
                          -DgroupId=your.groupId
                          -DartifactId=your-artifactId
                          -Dversion=version
                          -Dpackaging=jar
                          -DlocalRepositoryPath=path-to-specific-local-repo

【讨论】:

  • 我已经有了 jar 文件(我正在将项目转换为 maven),所以我安装了我所拥有的。谢谢。
猜你喜欢
  • 2012-11-07
  • 1970-01-01
  • 2014-06-22
  • 2022-08-07
  • 2014-01-04
  • 2013-07-12
  • 1970-01-01
  • 2021-11-19
  • 2011-08-05
相关资源
最近更新 更多