Como saber qual dependência é a correta de se usar?

Tive um problema com a depência Jersey. Estava criando uma classe para que o Spring reconhecesse o Jersey (JAX-RS), porém me deparo com o seguinte erro:

> Error creating bean with name ‘jerseyConfig’: Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.glassfish.jersey.server.ResourceConfig] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@42110406]

Quando deu este erro eu estava usando a seguinte dependência:

    <dependency>
        <groupId>org.glassfish.jersey</groupId>
        <artifactId>jax-rs-ri</artifactId>
        <version>2.0-rc1</version>
    </dependency>

Em um primeiro momento pensei que poderia ser problema de versão, então no maven central tentei usar outras diversas versões, porém eram do mesmo groupId (org.glassfish.jersey).

Após muito quebrar a cabeça e muita ajuda de outras comunidades, vi que além da versão incorreta, o pacote que eu estava usando era incorreto.

A dependência que resolveu o problema:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>

Sei que algumas coisas talvez sejam em tentativa e erro, mas existe alguma outra maneira de evitar esse tipo de problema?

Normalmente se evita sabendo-se exatamente o que se está fazendo. Como somos humanos e não sabemos nem uma ínfima fração de tudo que existe, errar faz parte. Sua “sorte” é ter que lidar com o maven que hoje em dia é um dos padrões da indústria. Antigamente, quando eu comecei, era tudo absolutamente na unha. Em relação ao seu problema, como está usando o spring boot, eu te daria a dica de sempre verificar se existe a dependência pronta para ser usada pelo spring boot. Assim vc evita dor de cabeça. Perceba que foi exatamente isso que resolveu seu problema.

1 curtida

Legal. Fiz a pergunta exatamente por entender que muitas vezes é assim mesmo, tentativa e erro até resolver. Mas pensei que as vezes poderia existir algum método mais simples.
Valeu, David.

1 curtida

Projetos sérios costumam documentar esse tipo de coisa. No caso do Spring, está aqui (e pode ver que o spring-boot-starter-jersey está nessa lista).

Mas claro, tem projeto que não documenta direito, e aí é na tentativa e erro mesmo…