Maven: net.sf.json-lib manquant

101

J'ai trouvé net.sf.json-lib dans le référentiel central . Copier-coller la dépendance (avec la version 2.3), puis lorsque je construis, j'obtiens cette erreur:

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

J'ai essayé d'utiliser la version 2.2.3, mais j'obtiens la même erreur. Pourquoi ai-je cette erreur? Je peux le remplacer en l'installant localement, mais je veux comprendre quel est le problème.

Modifier - J'ai supprimé le package de mon référentiel local et j'ai réessayé, cette fois en obtenant une erreur de somme de contrôle. Je suppose que je devrais déposer un rapport de bogue avec json-lib.

[WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for net/sf/json-lib/json-lib/2.3/json
-lib-2.3.pom - IGNORING
ripper234
la source
Il semble que le fichier dans maven central ait une somme de contrôle incorrecte ... vous devez décider si vous lui faites confiance ou non.
khmarbaise

Réponses:

268

En regardant le repo maven-central:

http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/

vous devez spécifier un classificateur pour cette dépendance: soit jdk13, soit jdk15, comme ceci:

    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
    </dependency>
Petar Tahchiev
la source
2
J'ai le même problème. Dans BuildConfig.groovy, je fais: dependencies { runtime group:'net.sf.json-lib', name:'json-lib', version:'2.4', classifier:'jdk15' }mais en vain. Je reçois Failed to resolve dependency.. Une idée pourquoi?
Alexandre Bourlier
2
Droite. Cela n'aide pas que search.maven.org/... nous ment et oublie le classificateur.
djsadinoff
Pour info, pour ceux qui utilisent Play Framework 1.x, vous ne pouvez pas utiliser ce pot de maven central - play.lighthouseapp.com/projects/57987-play-framework/tickets
...
Agréable! Je me demande pourquoi le classificateur n'a pas été défini lorsque j'ai initialement ajouté la dépendance qui avait jdk15.
heyomi
2
Quel est l'équivalent du lierre?
Ron Romero
25

Pour gradle comme échantillon

compilez 'net.sf.json-lib: json-lib: 2.4: jdk15'

OU

groupe de compilation: 'net.sf.json-lib', nom: 'json-lib', version: '2.4', classificateur: 'jdk15'

J'ai cherché plus de classificateurs, je n'ai rien trouvé d'autre que jdk15 (ne cherchez pas ou jdk16 ou jdk17)

Rinat Mukhamedgaliev
la source
Cela n'a pas fonctionné pour moi. J'ai dû installer le fichier localement comme la suggestion de @ icyrock.com, puis le mettre mavenLocal()avant mavenCentral()dans les repositoriessections.
ben3000
Juste pour la documentation: il y a au moins un bogue dans Gradle associé aux dépendances transitives, aussi pour autant que je sache, json-lib ne fournit aucune donnée de classificateur dans son POM (voir ceci et cela ). Je n'ai pas non plus trouvé de moyen de déterminer si Gradle vérifie les erreurs de somme de contrôle comme mentionné ci-dessus.
ben3000
2

Sauf commentaire de khimarbaise sur la fiabilité, vous pouvez l'installer localement à l'aide de 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
icyrock.com
la source
2
J'avais déjà le fichier jar (je convertis le projet en maven), j'ai donc installé ce que j'avais. Merci.
ripper234
1

Pour les utilisateurs de ivy, après avoir essayé de nombreuses itérations différentes pour configurer mon ivy.xml pour trouver correctement cette dépendance, cela a finalement fonctionné pour moi:

  <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>
danbsd
la source
Je pense que l'URL câblée n'est pas une solution optimale, cela fonctionne aussi dans Ivy: <dependency org = "net.sf.json-lib" name = "json-lib" rev = "2.3"> <artifact name = "json- lib "maven: classifier =" jdk15 "type =" jar "ext =" jar "/> </dependency>
stumbav
@stumbav, cela ne fonctionne pas pour moi. Il donne une erreur: analysé: [[Erreur fatale] ivy.xml: 19: 137: Le préfixe "maven" pour l'attribut "maven: classifier" associé à un type d'élément "artifact" n'est pas lié
Jitesh Sojitra