Solución:
java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties () Ljava / util / Map;
los Application#getProperties()
El método se introdujo en JAX-RS 2.0. Y este error suele ocurrir cuando mezcla JAX-RS 1.xy JAX-RS 2.x.
Por lo tanto, verifique los archivos JAR en su ruta de clases y elimine todo lo que se relacione con JAX-RS 1.x (y Jersey 1.x).
Una vez que esté usando Maven, puede ejecutar mvn dependency:tree
y compruebe qué está pasando con sus dependencias.
También veo algunas cosas que pueden causar algunos dolores de cabeza:
-
Consulte a continuación la dependencia correcta de la API de Servlet para Tomcat 8 (no olvide la
provided
alcance):<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1</version> <scope>provided</scope> </dependency>
-
Asegúrese de que todas las dependencias de Jersey utilicen la misma versión.
-
Probablemente no necesites el
javax.ws.rs-api
,jersey-server
yjersey-common
dependencias.-
Usar
jersey-container-servlet
,jersey-media-json-jackson
yjersey-media-multipart
dependencias. -
los
jersey-container-servlet
usos de dependenciajavax.ws.rs-api
,
jersey-server
yjersey-common
como dependencias transitivas.
-
-
Probablemente no necesites
<type>jar</type>
en sus dependencias.
Se puede resolver excluyendo el jar como se define a continuación, ya que JSR jar entra en conflicto con JAX-RS y crea el error anterior
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
Elimínelo y ejecútelo, funcionó para mí y espero que también funcione para usted.
Estoy de acuerdo con Cassio. Hay un par de cosas que agregaría:
- La dependencia para mí existía en jersey-core.
- Solo pude ver la dependencia jerárquica en mvn dependency: tree. Puede que me lo haya perdido, pero no aparecía en la vista de árbol de jerarquía de Eclipse.