NoClassDefFoundError is an error that is thrown when the Java Runtime System tries to load the definition of a class, and that class definition is no longer available. The required class definition was present at compile time, but it was missing at runtime.
Check the logger configuration and the jar that you have used.
meanwhile you can provide the missing dependency for org.apache.logging.log4j.util.ReflectionUtil
change the log4j version to 2.8.2 see if it helps
//edited version
I have created a project with below configuration to make the logger work
build.gradle
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java Library project to get you started.
* For more details take a look at the Java Libraries chapter in the Gradle
* user guide available at https://docs.gradle.org/5.0/userguide/java_library_plugin.html
*/
plugins {
// Apply the java-library plugin to add support for Java Library
id 'java-library'
}
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'
api 'org.apache.logging.log4j:log4j-web:2.8.2'
// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:26.0-jre'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
Create a log4j2.properties file under src/main/resources with below entries to show logs to console
appender.console.type = Console
appender.console.name = STDOUT
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
Below is the Java code that Invoke the logger (for testing I have put it inside a main method)
package GradleEclipseTestProject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class GradleLog4jTest {
public static void main(String[] args) {
System.out.println("Testing log4j dependencies");
Logger logger = LogManager.getLogger();
logger.info("This is a sample logger");
}
}