Hello have somebody Kotlin Spring Boot with Native...
# spring
m
Hello have somebody Kotlin Spring Boot with Native Image
up&running.
https://github.com/marzelwidmer/kboot-native
Copy code
[INFO]     [creator]       Native Image: Contributing to layer
[INFO]     [creator]         GraalVM 21.2.0 Java 11 CE (Java Version 11.0.12+6-jvmci-21.2-b08)
[INFO]     [creator]         Executing native-image -H:+StaticExecutableWithDynamicLibC -H:Name=/layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt -cp /workspace:/workspace/BOOT-INF/classes:/workspace/BOOT-INF/lib/spring-native-0.10.0.jar:/workspace/BOOT-INF/lib/spring-boot-2.5.3.jar:/workspace/BOOT-INF/lib/spring-context-5.3.9.jar:/workspace/BOOT-INF/lib/spring-aop-5.3.9.jar:/workspace/BOOT-INF/lib/spring-expression-5.3.9.jar:/workspace/BOOT-INF/lib/spring-boot-autoconfigure-2.5.3.jar:/workspace/BOOT-INF/lib/logback-classic-1.2.4.jar:/workspace/BOOT-INF/lib/logback-core-1.2.4.jar:/workspace/BOOT-INF/lib/log4j-to-slf4j-2.14.1.jar:/workspace/BOOT-INF/lib/log4j-api-2.14.1.jar:/workspace/BOOT-INF/lib/jul-to-slf4j-1.7.32.jar:/workspace/BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar:/workspace/BOOT-INF/lib/snakeyaml-1.28.jar:/workspace/BOOT-INF/lib/jackson-datatype-jdk8-2.12.4.jar:/workspace/BOOT-INF/lib/jackson-datatype-jsr310-2.12.4.jar:/workspace/BOOT-INF/lib/jackson-module-parameter-names-2.12.4.jar:/workspace/BOOT-INF/lib/reactor-netty-http-1.0.9.jar:/workspace/BOOT-INF/lib/netty-codec-http-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-common-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-buffer-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-transport-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-codec-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-handler-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-codec-http2-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-resolver-dns-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-resolver-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-codec-dns-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-resolver-dns-native-macos-4.1.66.Final-osx-x86_64.jar:/workspace/BOOT-INF/lib/netty-transport-native-unix-common-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-transport-native-epoll-4.1.66.Final-linux-x86_64.jar:/workspace/BOOT-INF/lib/reactor-netty-core-1.0.9.jar:/workspace/BOOT-INF/lib/netty-handler-proxy-4.1.66.Final.jar:/workspace/BOOT-INF/lib/netty-codec-socks-4.1.66.Final.jar:/workspace/BOOT-INF/lib/spring-web-5.3.9.jar:/workspace/BOOT-INF/lib/spring-beans-5.3.9.jar:/workspace/BOOT-INF/lib/spring-webflux-5.3.9.jar:/workspace/BOOT-INF/lib/jackson-module-kotlin-2.12.4.jar:/workspace/BOOT-INF/lib/jackson-databind-2.12.4.jar:/workspace/BOOT-INF/lib/jackson-core-2.12.4.jar:/workspace/BOOT-INF/lib/jackson-annotations-2.12.4.jar:/workspace/BOOT-INF/lib/reactor-kotlin-extensions-1.1.3.jar:/workspace/BOOT-INF/lib/reactor-core-3.4.8.jar:/workspace/BOOT-INF/lib/reactive-streams-1.0.3.jar:/workspace/BOOT-INF/lib/kotlin-reflect-1.5.21.jar:/workspace/BOOT-INF/lib/kotlin-stdlib-1.5.21.jar:/workspace/BOOT-INF/lib/annotations-13.0.jar:/workspace/BOOT-INF/lib/kotlin-stdlib-common-1.5.21.jar:/workspace/BOOT-INF/lib/kotlin-stdlib-jdk8-1.5.21.jar:/workspace/BOOT-INF/lib/kotlin-stdlib-jdk7-1.5.21.jar:/workspace/BOOT-INF/lib/kotlinx-coroutines-reactor-1.5.1.jar:/workspace/BOOT-INF/lib/kotlinx-coroutines-reactive-1.5.1.jar:/workspace/BOOT-INF/lib/kotlinx-coroutines-core-jvm-1.5.1.jar:/workspace/BOOT-INF/lib/slf4j-api-1.7.32.jar:/workspace/BOOT-INF/lib/spring-core-5.3.9.jar:/workspace/BOOT-INF/lib/spring-jcl-5.3.9.jar:/workspace/BOOT-INF/lib/spring-boot-jarmode-layertools-2.5.3.jar com.example.demo.KbootNativeApplicationKt
[INFO]     [creator]     [/layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt:183]    classlist:   3,477.37 ms,  1.19 GB
[INFO]     [creator]     [/layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt:183]        (cap):     523.64 ms,  1.19 GB
[INFO]     [creator]     [/layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt:183]        setup:   2,577.28 ms,  1.19 GB
[INFO]     [creator]     To see how the classes got initialized, use --trace-class-initialization=org.springframework.util.unit.DataSize
[INFO]     [creator]     [/layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt:183]     analysis:  10,754.71 ms,  1.54 GB
[INFO]     [creator]     Error: Classes that should be initialized at run time got initialized during image building:
[INFO]     [creator]      org.springframework.util.unit.DataSize was unintentionally initialized at build time. To see why org.springframework.util.unit.DataSize got initialized use --trace-class-initialization=org.springframework.util.unit.DataSize
[INFO]     [creator]
[INFO]     [creator]     Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
[INFO]     [creator]     [/layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt:183]      [total]:  17,145.94 ms,  1.54 GB
[INFO]     [creator]     # Printing build artifacts to: /layers/paketo-buildpacks_native-image/native-image/com.example.demo.KbootNativeApplicationKt.build_artifacts.txt
[INFO]     [creator]     Error: Image build request failed with exit status 1
[INFO]     [creator]     unable to invoke layer creator
[INFO]     [creator]     unable to contribute native-image layer
[INFO]     [creator]     error running build
[INFO]     [creator]     exit status 1
[INFO]     [creator]     ERROR: failed to build: exit status 1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
Woop Woop Woop
I found it …. the
Spring AOT plugin
was missing
🙈
n
Copy code
Error: Classes that should be initialized at run time got initialized during image building:
[INFO]     [creator]      org.springframework.util.unit.DataSize was unintentionally initialized at build time. To see why org.springframework.util.unit.DataSize got initialized use --trace-class-initialization=org.springframework.util.unit.DataSize
i’d suggest you to add `
Copy code
--initialize-at-build-time=org.springframework.util.unit.DataSize
but this is not kotlin related
m
Copy code
.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.3)

2021-08-15 15:54:58.230  INFO 1 --- [           main] o.s.boot.SpringApplication               : Starting application using Java 11.0.12 on df5ff410afff with PID 1 (started by cnb in /workspace)
2021-08-15 15:54:58.230  INFO 1 --- [           main] o.s.boot.SpringApplication               : No active profile set, falling back to default profiles: default
2021-08-15 15:54:58.267  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080
2021-08-15 15:54:58.268  INFO 1 --- [           main] o.s.boot.SpringApplication               : Started application in 0.05 seconds (JVM running for 0.052)
I forget to configure the
spring-aot-maven-plugin
Copy code
<!-- TODO -->
			<plugin>
				<groupId>org.springframework.experimental</groupId>
				<artifactId>spring-aot-maven-plugin</artifactId>
				<version>0.10.2</version>
				<executions>
					<execution>
						<id>test-generate</id>
						<goals>
							<goal>test-generate</goal>
						</goals>
					</execution>
					<execution>
						<id>generate</id>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>