Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

598
Views
La anotación Lombok @Log4j2 no funciona con la última versión de log4j (v2.15.0)

Actualicé la dependencia log4j a la última versión 2.15.0 y ahora mi aplicación Spring Boot arroja un error al iniciar

 Exception in thread "main" java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY at org.apache.logging.log4j.core.config.ConfigurationSource.<clinit>(ConfigurationSource.java:56) at org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32) at org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:85) at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254) at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218) at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136) at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123) at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47) at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194) at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:581) at foo.bar.org.MyApp.<clinit>(MyApp.java:13)

Aquí está mi clase principal

 @Log4j2 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } }
over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

En caso de que tenga lo siguiente en su pom.xml:

 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.15.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.15.0</version> </dependency>

asegúrese de que ambos tengan la misma versión. Lo olvidé por uno (dejé la versión anterior) y vi el mismo error.

over 4 years ago · Santiago Trujillo Report

0

  1. establezca la propiedad log4j2.version:
 <properties> <log4j2.version>2.15.0</log4j2.version> </properties>
  1. corregir pom.xml:
 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j2.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j2.version}</version> </dependency>
over 4 years ago · Santiago Trujillo Report

0

Lo que funcionó para mí fue excluir todas las dependencias transitivas de la versión en conflicto para log4j-api y log4j-core .
Los he rastreado con:
mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-api
y
mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-core
Así que me aseguré de que la versión 2.15.0 fuera la única versión para ambas dependencias de log4j en todo el proyecto.

over 4 years ago · Santiago Trujillo Report

0

Nuestro proyecto anterior tiene el mismo problema con 2.15.0 o 2.16.0, luego intentamos que 2.12.2 esté bien, y esto también corrige la vulnerabilidad de seguridad. Aquí el sitio log4j: https://logging.apache.org/log4j/2 .X/

Mitigación

En la versión 2.12.2 Log4j deshabilita el acceso a JNDI por defecto. El uso de JNDI en la configuración ahora debe habilitarse explícitamente. Las llamadas a JndiLookup ahora devolverán una cadena constante. Además, Log4j ahora limita los protocolos de forma predeterminada solo a Java. La función de búsqueda de mensajes se ha eliminado por completo.

En la versión 2.16.0 Log4j deshabilita el acceso a JNDI por defecto. Las búsquedas JNDI en la configuración ahora deben habilitarse explícitamente. Además, Log4j ahora limita los protocolos de forma predeterminada a solo java, ldap y ldaps y limita los protocolos ldap a solo acceder a objetos primitivos de Java. Los hosts que no sean el host local deben estar explícitamente permitidos. La función de búsqueda de mensajes se ha eliminado por completo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!