Maven: brak pliku net.sf.json-lib

101

Znalazłem net.sf.json-lib w centralnym repozytorium . Skopiuj i wklej zależność (z wersją 2.3), a następnie podczas kompilacji otrzymuję ten błąd:

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

Próbowałem użyć wersji 2.2.3, ale pojawia się ten sam błąd. Dlaczego otrzymuję ten błąd? Mogę to zmienić, instalując lokalnie, ale chcę zrozumieć, na czym polega problem.

Edycja - usunąłem pakiet z mojego lokalnego repozytorium i spróbowałem ponownie, tym razem otrzymując błąd sumy kontrolnej. Myślę, że powinienem zgłosić błąd za pomocą json-lib.

[WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for net/sf/json-lib/json-lib/2.3/json
-lib-2.3.pom - IGNORING
zrywak234
źródło
Wygląda na to, że plik w maven central ma nieprawidłową sumę kontrolną ... musisz zdecydować, czy i tak mu ufasz, czy nie.
khmarbaise

Odpowiedzi:

270

Patrząc na repozytorium Maven-Central:

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

musisz określić klasyfikator dla tej zależności: albo jdk13, albo jdk15, na przykład:

    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
    </dependency>
Petar Tahchiev
źródło
2
Mam ten sam problem. W BuildConfig.groovy, tak: dependencies { runtime group:'net.sf.json-lib', name:'json-lib', version:'2.4', classifier:'jdk15' }ale bezskutecznie. Rozumiem Failed to resolve dependency.. Każdy pomysł, dlaczego?
Alexandre Bourlier
2
Dobrze. Nie pomaga to, że search.maven.org/… nas okłamuje i pomija klasyfikator.
djsadinoff
Do Twojej wiadomości, dla tych, którzy używają Play Framework 1.x, nie możesz użyć tego jar z Maven
ripper234
Miły! Ciekawe, dlaczego klasyfikator nie został ustawiony, kiedy początkowo dodałem zależność, która miała jdk15.
heyomi
2
Jaki jest odpowiednik bluszczu?
Ron Romero,
25

Dla klasy jako próbki

kompiluj „net.sf.json-lib: json-lib: 2.4: jdk15”

LUB

grupa kompilacji: „net.sf.json-lib”, nazwa: „json-lib”, wersja: „2.4”, klasyfikator: „jdk15”

Szukałem więcej klasyfikatorów, nie mogłem znaleźć niczego innego niż jdk15 (nie szukaj ani jdk16 lub jdk17)

Rinat Mukhamedgaliev
źródło
To nie zadziałało dla mnie. Musiałem zainstalować plik lokalnie zgodnie z sugestią @ icyrock.com, a następnie umieścić go mavenLocal()wcześniej mavenCentral()w repositoriessekcjach.
ben3000
Tylko dla dokumentacji: w Gradle jest co najmniej jeden błąd związany z zależnościami przechodnimi, również o ile wiem, json-lib nie dostarcza żadnych danych klasyfikatora w swoim POM (zobacz to i to ). Nie mogłem również znaleźć sposobu, aby określić, czy Gradle sprawdza błędy sum kontrolnych, jak wspomniano powyżej.
ben3000
2

Oprócz komentarza khimarbaise o wiarygodności, możesz zainstalować go lokalnie za pomocą 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
źródło
2
Miałem już plik jar (konwertuję projekt do maven), więc zainstalowałem to, co miałem. Dzięki.
ripper234
1

W przypadku użytkowników bluszczu, po wypróbowaniu wielu różnych iteracji, aby skonfigurować mój plik ivy.xml, aby poprawnie znaleźć tę zależność, w końcu zadziałało:

  <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
źródło
Myślę, że stały adres URL nie jest optymalnym rozwiązaniem, działa to również w 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, to nie działa dla mnie. Daje błąd: przeanalizowano: [[Błąd krytyczny] ivy.xml: 19: 137: Przedrostek „maven” dla atrybutu „maven: klasyfikator” powiązany z typem elementu „artefakt” nie jest powiązany
Jitesh Sojitra