Maven: falta net.sf.json-lib

101

Encontrei net.sf.json-lib no repositório central . Copiei e colei a dependência (com a versão 2.3) e, quando compilar, recebo este erro:

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

Tentei usar a versão 2.2.3, mas estou recebendo o mesmo erro. Por que estou recebendo este erro? Posso substituí-lo instalando-o localmente, mas quero entender qual é o problema.

Editar - excluí o pacote do meu repositório local e tentei novamente, desta vez obtendo um erro de soma de verificação. Acho que devo registrar um relatório de bug com 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
fonte
Parece que o arquivo no maven central tem uma soma de verificação incorreta ... você deve decidir se confia nele ou não.
khmarbaise

Respostas:

268

Olhando para o repositório central maven:

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

você precisa especificar um classificador para esta dependência: jdk13 ou jdk15, assim:

    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
    </dependency>
Petar Tahchiev
fonte
2
Eu estou tendo o mesmo problema. Em BuildConfig.groovy, sim: dependencies { runtime group:'net.sf.json-lib', name:'json-lib', version:'2.4', classifier:'jdk15' }mas sem sucesso. Eu entendo Failed to resolve dependency.. Alguma ideia do porquê?
Alexandre Bourlier
2
Certo. Não ajuda que search.maven.org/… esteja mentindo para nós e omitindo o classificador.
Djsadinoff
Para sua informação, para aqueles que usam Play Framework 1.x, você não pode usar este jar do maven central - play.lighthouseapp.com/projects/57987-play-framework/tickets/…
ripper234
Agradável! Pergunto por que o classificador não foi definido quando eu adicionei inicialmente a dependência que tinha o jdk15.
heyomi
2
Qual é o equivalente para ivy?
Ron Romero
25

Para gradle como amostra

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

OU

grupo de compilação: 'net.sf.json-lib', nome: 'json-lib', versão: '2.4', classificador: 'jdk15'

Procurei por mais classificadores e não consegui encontrar nada além de jdk15 (não vá procurando ou jdk16 ou jdk17)

Rinat Mukhamedgaliev
fonte
Isso não funcionou para mim. Eu tive que instalar o arquivo localmente semelhante à sugestão de @ icyrock.com, em seguida, colocar mavenLocal()antes mavenCentral()nas repositoriesseções.
ben3000
Apenas para documentação: há pelo menos um bug no Gradle associado a dependências transitivas, também pelo que eu posso dizer, json-lib não fornece nenhum dado de classificador em seu POM (veja isto e isto ). Também não consegui encontrar uma maneira de determinar se o Gradle verifica se há erros de soma de verificação conforme mencionado acima.
ben3000
2

Exceto pelo comentário de khimarbaise sobre confiabilidade, você pode instalá-lo localmente usando a instalação do maven:

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
fonte
2
Eu já tinha o arquivo jar (estou convertendo o projeto para maven), então instalei o que tinha. Obrigado.
ripper234
1

Para usuários do ivy, depois de tentar várias iterações diferentes para configurar meu ivy.xml para localizar adequadamente essa dependência, isso finalmente funcionou para mim:

  <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
fonte
Acho que a URL com fio não é uma solução ideal, isso funciona no Ivy também: <dependency org = "net.sf.json-lib" name = "json-lib" rev = "2.3"> <nome do artefato = "json- lib "maven: classifier =" jdk15 "type =" jar "ext =" jar "/> </dependency>
stumbav
@stumbav, isso não funciona para mim. Ele dá erro: analisado: [[Erro fatal] ivy.xml: 19: 137: O prefixo "maven" para o atributo "maven: classificador" associado a um tipo de elemento "artefato" não está vinculado
Jitesh Sojitra