Maven: fehlende net.sf.json-lib


101

Ich habe net.sf.json-lib im zentralen Repository gefunden . Kopieren Sie die Abhängigkeit (mit Version 2.3) und fügen Sie beim Erstellen den folgenden Fehler ein:

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

Ich habe versucht, Version 2.2.3 zu verwenden, erhalte jedoch den gleichen Fehler. Warum erhalte ich diesen Fehler? Ich kann es überschreiben, indem ich es lokal installiere, aber ich möchte verstehen, wo das Problem liegt.

Bearbeiten - Ich habe das Paket aus meinem lokalen Repository gelöscht und es erneut versucht. Diesmal wurde ein Prüfsummenfehler angezeigt. Ich denke, ich sollte einen Fehlerbericht bei json-lib einreichen.

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

Es sieht so aus, als ob die Datei in Maven Central eine falsche Prüfsumme hat ... Sie müssen entscheiden, ob Sie ihr trotzdem vertrauen oder nicht.
Khmarbaise

Antworten:


268

Blick auf das Maven-Central-Repo:

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

Sie müssen einen Klassifizierer für diese Abhängigkeit angeben: entweder jdk13 oder jdk15, wie folgt:

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

2
Ich habe das gleiche Problem. In BuildConfig.groovymache ich: dependencies { runtime group:'net.sf.json-lib', name:'json-lib', version:'2.4', classifier:'jdk15' }aber ohne Erfolg. Ich verstehe Failed to resolve dependency.. Irgendeine Idee warum?
Alexandre Bourlier

2
Richtig. Es hilft nicht, dass search.maven.org/… uns anlügt und den Klassifikator weglässt.
Djsadinoff


Nett! Ich frage mich, warum der Klassifikator nicht gesetzt wurde, als ich anfänglich die Abhängigkeit mit jdk15 hinzufügte.
Heyomi

2
Was ist das Äquivalent für Efeu?
Ron Romero

25

Für Gradle als Probe

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

ODER

Kompilierungsgruppe: 'net.sf.json-lib', Name: 'json-lib', Version: '2.4', Klassifikator: 'jdk15'

Ich suchte nach mehr Klassifikatoren und konnte nichts anderes als jdk15 finden (nicht suchen oder jdk16 oder jdk17)


Das hat bei mir nicht funktioniert. Ich musste die Datei lokal installieren, ähnlich dem Vorschlag von @ icyrock.com, und sie mavenLocal()zuvor mavenCentral()in die repositoriesAbschnitte einfügen .
Ben3000

Nur zur Dokumentation: Es gibt mindestens einen Fehler in Gradle , der mit transitiven Abhängigkeiten verbunden ist. Soweit ich das beurteilen kann, liefert json-lib keine Klassifikatordaten in seinem POM (siehe dies und das ). Ich konnte auch keinen Weg finden, um festzustellen, ob Gradle wie oben erwähnt auf Prüfsummenfehler prüft.
Ben3000

2

Abgesehen von Khimarbaises Kommentar zur Vertrauenswürdigkeit können Sie ihn lokal mit maven install installieren:

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

2
Ich hatte bereits die JAR-Datei (ich konvertiere das Projekt in Maven), also habe ich installiert, was ich hatte. Vielen Dank.
Ripper234

1

Für Ivy-Benutzer funktionierte dies schließlich, nachdem ich viele verschiedene Iterationen versucht hatte, meine ivy.xml so zu konfigurieren, dass diese Abhängigkeit richtig gefunden wurde:

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

Ich denke, die festverdrahtete URL ist keine optimale Lösung, dies funktioniert auch in Ivy: <dependency org = "net.sf.json-lib" name = "json-lib" rev = "2.3"> <artefaktname = "json- lib "maven: classifier =" jdk15 "type =" jar "ext =" jar "/> </ dependency>
stumbav

@stumbav, das funktioniert bei mir nicht. Es gibt Fehler: analysiert: [[Schwerwiegender Fehler] ivy.xml: 19: 137: Das Präfix "maven" für das Attribut "maven: classifier", das einem Elementtyp "Artefakt" zugeordnet ist, ist nicht gebunden
Jitesh Sojitra
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.