Actual behavior (the bug)
After upgrading to Javalin 7.0.0, the project fails during Maven compilation with:
Maven stacktrace
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.1:compile (default-compile) on project TryGit: Fatal error compiling: java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonSerializeAs: com.fasterxml.jackson.annotation.JsonSerializeAs -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.1:compile (default-compile) on project TryGit: Fatal error compiling
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: org.apache.maven.plugin.MojoExecutionException: Fatal error compiling
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.executeReal (AbstractCompilerMojo.java:1238)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:708)
at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:235)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: org.codehaus.plexus.compiler.CompilerException: java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonSerializeAs
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:179)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:214)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.executeReal (AbstractCompilerMojo.java:1235)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:708)
at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:235)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonSerializeAs
at com.sun.tools.javac.api.JavacTaskImpl.invocationHelper (JavacTaskImpl.java:168)
at com.sun.tools.javac.api.JavacTaskImpl.doCall (JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.call (JavacTaskImpl.java:94)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:126)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:214)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.executeReal (AbstractCompilerMojo.java:1235)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:708)
at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:235)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonSerializeAs
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.<clinit> (JacksonAnnotationIntrospector.java:38)
at com.fasterxml.jackson.databind.ObjectMapper.<clinit> (ObjectMapper.java:403)
at io.javalin.openapi.experimental.processor.shared.JsonExtensionsKt.<clinit> (JsonExtensions.kt:11)
at io.javalin.openapi.schema.OpenApiSchemaBuilder.<init> (OpenApiSchemaBuilder.kt:32)
at io.javalin.openapi.schema.OpenApiSchemaGenerator.generateSchema (OpenApiSchemaGenerator.kt:29)
at io.javalin.openapi.processor.generators.OpenApiGenerator.generate (OpenApiGenerator.kt:47)
at io.javalin.openapi.processor.OpenApiAnnotationProcessor.process (OpenApiAnnotationProcessor.kt:59)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor (JavacProcessingEnvironment.java:956)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs (JavacProcessingEnvironment.java:872)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run (JavacProcessingEnvironment.java:1188)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing (JavacProcessingEnvironment.java:1301)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations (JavaCompiler.java:1262)
at com.sun.tools.javac.main.JavaCompiler.compile (JavaCompiler.java:938)
at com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0 (JavacTaskImpl.java:104)
at com.sun.tools.javac.api.JavacTaskImpl.invocationHelper (JavacTaskImpl.java:152)
at com.sun.tools.javac.api.JavacTaskImpl.doCall (JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.call (JavacTaskImpl.java:94)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:126)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:214)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.executeReal (AbstractCompilerMojo.java:1235)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:708)
at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:235)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonSerializeAs
at java.net.URLClassLoader.findClass (URLClassLoader.java:377)
at java.lang.ClassLoader.loadClass (ClassLoader.java:557)
at java.lang.ClassLoader.loadClass (ClassLoader.java:490)
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.<clinit> (JacksonAnnotationIntrospector.java:38)
at com.fasterxml.jackson.databind.ObjectMapper.<clinit> (ObjectMapper.java:403)
at io.javalin.openapi.experimental.processor.shared.JsonExtensionsKt.<clinit> (JsonExtensions.kt:11)
at io.javalin.openapi.schema.OpenApiSchemaBuilder.<init> (OpenApiSchemaBuilder.kt:32)
at io.javalin.openapi.schema.OpenApiSchemaGenerator.generateSchema (OpenApiSchemaGenerator.kt:29)
at io.javalin.openapi.processor.generators.OpenApiGenerator.generate (OpenApiGenerator.kt:47)
at io.javalin.openapi.processor.OpenApiAnnotationProcessor.process (OpenApiAnnotationProcessor.kt:59)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor (JavacProcessingEnvironment.java:956)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs (JavacProcessingEnvironment.java:872)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run (JavacProcessingEnvironment.java:1188)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing (JavacProcessingEnvironment.java:1301)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations (JavaCompiler.java:1262)
at com.sun.tools.javac.main.JavaCompiler.compile (JavaCompiler.java:938)
at com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0 (JavacTaskImpl.java:104)
at com.sun.tools.javac.api.JavacTaskImpl.invocationHelper (JavacTaskImpl.java:152)
at com.sun.tools.javac.api.JavacTaskImpl.doCall (JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.call (JavacTaskImpl.java:94)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:126)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:214)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.executeReal (AbstractCompilerMojo.java:1235)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:708)
at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:235)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
The exception happens during the OpenAPI annotation processor phase (Maven compile).
The same code compiles successfully with Javalin 6.7.0. (with minor syntax adjustments)
The failure appears only after upgrading all Javalin and OpenAPI artifacts to 7.0.0.
Expected behavior
Project compiles successfully, and OpenAPI annotation processor runs without ClassNotFoundException.
To Reproduce
Code to reproduce
public class App {
private static final int PORT = 8080;
private static final String SWAGGER_PATH = "/swagger";
private static final String REDOC_PATH = "/redoc";
private static final String OPENAPI_PATH = "/openapi";
@OpenApi(
summary = "Get all people",
operationId = "getAllPeople",
path = "/people",
methods = HttpMethod.GET,
tags = {"People"}
)
public static class TestHandler implements Handler {
@Override
public void handle(@NotNull Context ctx) {
ctx.status(200);
ctx.json(Map.of("message", "Hello world!"));
}
}
static void main() {
var app = Javalin.create(config -> {
config.http.defaultContentType = "application/json";
config.registerPlugin(new OpenApiPlugin(pluginConfig -> {
pluginConfig.withDocumentationPath(OPENAPI_PATH);
pluginConfig.withDefinitionConfiguration((version, definition) -> {
definition.info(info -> {
info.title("Javalin Info OpenAPI example");
info.version("1.0.0");
info.description("Generated API documentation");
});
});
}));
config.registerPlugin(new SwaggerPlugin(swaggerConfig -> {
swaggerConfig.withUiPath(SWAGGER_PATH);
}));
config.registerPlugin(new ReDocPlugin(reDocConfig -> {
reDocConfig.withUiPath(REDOC_PATH);
}));
config.routes.get("/people", new TestHandler());
}).start(PORT);
}
}
Maven POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>TryGit</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>25</maven.compiler.source>
<maven.compiler.target>25</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.version>3.9.12</maven.version>
<javalin.version>7.0.0</javalin.version>
<javalin.openapi.version>7.0.0</javalin.openapi.version>
<maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>io.javalin</groupId>
<artifactId>javalin</artifactId>
<version>${javalin.version}</version>
</dependency>
<dependency>
<groupId>io.javalin.community.openapi</groupId>
<artifactId>javalin-openapi-plugin</artifactId>
<version>${javalin.openapi.version}</version>
</dependency>
<dependency>
<groupId>io.javalin.community.openapi</groupId>
<artifactId>javalin-swagger-plugin</artifactId>
<version>${javalin.openapi.version}</version>
</dependency>
<dependency>
<groupId>io.javalin.community.openapi</groupId>
<artifactId>javalin-redoc-plugin</artifactId>
<version>${javalin.openapi.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<release>25</release>
<annotationProcessorPaths>
<!-- Javalin OpenAPI annotation processor -->
<path>
<groupId>io.javalin.community.openapi</groupId>
<artifactId>openapi-annotation-processor</artifactId>
<version>${javalin.openapi.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
mvn dependency:tree result
[INFO] --- dependency:3.7.0:tree (default-cli) @ TryGit ---
[INFO] org.example:TryGit:jar:1.0-SNAPSHOT
[INFO] +- io.javalin:javalin:jar:7.0.0:compile
[INFO] | +- org.slf4j:slf4j-api:jar:2.0.17:compile
[INFO] | +- org.eclipse.jetty:jetty-server:jar:12.1.6:compile
[INFO] | | +- org.eclipse.jetty:jetty-http:jar:12.1.6:compile
[INFO] | | | \- org.eclipse.jetty:jetty-util:jar:12.1.6:compile
[INFO] | | \- org.eclipse.jetty:jetty-io:jar:12.1.6:compile
[INFO] | +- org.eclipse.jetty.ee10:jetty-ee10-servlet:jar:12.1.6:compile
[INFO] | | +- jakarta.servlet:jakarta.servlet-api:jar:6.0.0:compile
[INFO] | | +- org.eclipse.jetty:jetty-security:jar:12.1.6:compile
[INFO] | | \- org.eclipse.jetty:jetty-session:jar:12.1.6:compile
[INFO] | +- org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server:jar:12.1.6:compile
[INFO] | | +- org.eclipse.jetty.ee10:jetty-ee10-annotations:jar:12.1.6:compile
[INFO] | | | +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile
[INFO] | | | +- org.eclipse.jetty:jetty-annotations:jar:12.1.6:compile
[INFO] | | | +- org.eclipse.jetty.ee10:jetty-ee10-plus:jar:12.1.6:compile
[INFO] | | | | +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:4.0.1:compile
[INFO] | | | | +- jakarta.enterprise:jakarta.enterprise.lang-model:jar:4.0.1:compile
[INFO] | | | | +- jakarta.inject:jakarta.inject-api:jar:2.0.1:compile
[INFO] | | | | +- jakarta.interceptor:jakarta.interceptor-api:jar:2.1.0:compile
[INFO] | | | | +- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
[INFO] | | | | +- org.eclipse.jetty:jetty-jndi:jar:12.1.6:compile
[INFO] | | | | \- org.eclipse.jetty:jetty-plus:jar:12.1.6:compile
[INFO] | | | +- org.eclipse.jetty.ee10:jetty-ee10-webapp:jar:12.1.6:compile
[INFO] | | | | +- org.eclipse.jetty:jetty-xml:jar:12.1.6:compile
[INFO] | | | | \- org.eclipse.jetty.ee:jetty-ee-webapp:jar:12.1.6:compile
[INFO] | | | +- org.ow2.asm:asm:jar:9.9.1:compile
[INFO] | | | \- org.ow2.asm:asm-commons:jar:9.9.1:compile
[INFO] | | | \- org.ow2.asm:asm-tree:jar:9.9.1:compile
[INFO] | | +- org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet:jar:12.1.6:compile
[INFO] | | | \- org.eclipse.jetty.websocket:jetty-websocket-core-server:jar:12.1.6:compile
[INFO] | | +- org.eclipse.jetty.websocket:jetty-websocket-jetty-api:jar:12.1.6:compile
[INFO] | | +- org.eclipse.jetty.websocket:jetty-websocket-jetty-common:jar:12.1.6:compile
[INFO] | | | \- org.eclipse.jetty.websocket:jetty-websocket-core-common:jar:12.1.6:compile
[INFO] | | \- org.eclipse.jetty.websocket:jetty-websocket-jetty-server:jar:12.1.6:compile
[INFO] | \- org.jetbrains.kotlin:kotlin-stdlib:jar:2.2.20:compile
[INFO] | \- org.jetbrains:annotations:jar:13.0:compile
[INFO] +- io.javalin.community.openapi:javalin-openapi-plugin:jar:7.0.0:compile
[INFO] | \- io.javalin.community.openapi:openapi-generator:jar:7.0.0:compile
[INFO] +- io.javalin.community.openapi:javalin-swagger-plugin:jar:7.0.0:compile
[INFO] | +- io.javalin.community.openapi:openapi-specification:jar:7.0.0:compile
[INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.21.0:compile
[INFO] | | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.21:compile
[INFO] | | | \- com.fasterxml.jackson.core:jackson-core:jar:2.21.0:compile
[INFO] | | \- com.fasterxml.jackson.module:jackson-module-kotlin:jar:2.21.0:compile
[INFO] | | \- org.jetbrains.kotlin:kotlin-reflect:jar:2.1.21:compile
[INFO] | \- org.webjars:swagger-ui:jar:5.31.2:compile
[INFO] +- io.javalin.community.openapi:javalin-redoc-plugin:jar:7.0.0:compile
[INFO] | +- org.webjars.npm:redoc:jar:2.5.0:runtime
[INFO] | \- org.webjars.npm:js-tokens:jar:8.0.3:runtime
[INFO] \- org.slf4j:slf4j-simple:jar:2.0.17:compile
Additional context
Environment:
- Java 25
- Maven 3.9.12
- Windows 11
Actual behavior (the bug)
After upgrading to Javalin 7.0.0, the project fails during Maven compilation with:
Maven stacktrace
The exception happens during the OpenAPI annotation processor phase (Maven compile).
The same code compiles successfully with Javalin 6.7.0. (with minor syntax adjustments)
The failure appears only after upgrading all Javalin and OpenAPI artifacts to 7.0.0.
Expected behavior
Project compiles successfully, and OpenAPI annotation processor runs without ClassNotFoundException.
To Reproduce
Code to reproduce
Maven POM
mvn dependency:tree result
Additional context
Environment: