Se creó un nuevo nombre de paquete Jackson en el paquete jar de terceros, lo que provocó que el arranque de primavera informara un error de serialización json en tomcat

Inserte la descripción de la imagen aquí
Ayude a un amigo a resolver un problema. Cuando regresa el objeto serializado del arranque de resorte, se informa un error y se encuentra la causa. Se introduce un paquete jar pagado por un tercero en el proyecto. Se construyó un paquete jackson en este paquete. La primera reacción es que el código está incompleto O la versión no coincide con la versión del proyecto de arranque actual, lo que genera un error de que la serialización no puede encontrar el método.
Inserte la descripción de la imagen aquí
De acuerdo con la reflexión en el entorno de desarrollo, el método principal del modo springboot está bien, pero no funcionará después de que se arroje a un paquete de guerra y se deje caer en tomcat. La reacción del autor es que springboot tiene su propio conjunto de frascos y métodos de carga de clase. En cuanto a tomcat, es Por otro lado, resulta que este es el caso después de verificar la información. Los lectores están interesados ​​en usar Baidu o Google para cargar los diferentes modos de carga de dos maneras. El aislamiento de carga de arranque está funcionando muy bien. La solución se describe a continuación.

  1. El frasco está directamente en código de Jackson para todos retirados, y luego el frasco de nuevo precipitada en el proyecto, por lo que no será problemas al cargar el conflicto, centrándose en 2

Inserte la descripción de la imagen aquí

2. Cambie el nombre del paquete jar de gateway-client a zzzz-gateway-client, porque el método de carga del paquete jar en tomcat se carga por el orden del nombre del archivo, como A, B, C ... Z, y
A se carga primero en orden. Paquete, luego cargue el paquete B, y así sucesivamente, y finalmente cargue el paquete Z, luego cada vez que se carga un nombre de paquete, y se encontrará con el mismo nombre de paquete más tarde, no lo cargará nuevamente,
por lo que este tercero Ponga el jar al final, tomcat no cargará el paquete que entre en conflicto con el paquete jar anterior, lo que resuelve el problema.

Tenga en cuenta que el paquete que no se cargará se refiere a los paquetes de alibaba y jcraft en la carpeta jar. Si es solo el conflicto de alibaba, no afectará que continúe cargando el paquete jcraft y la clase. El jar es equivalente a un archivo comprimido. De hecho, el jar se descomprime y luego carga la clase.

Publicado 38 artículos originales · ganado elogios 17 · vistas 9006

Supongo que te gusta

Origin blog.csdn.net/cainiao1412/article/details/102492896
Recomendado
Clasificación