Recently I decided to try out Kotlin for future Spring Boot projects in place of Java. Having used Kotlin for all of my recent Android projects, as well as the experience of rewriting some old ones with Kotlin drove that thought.

Upon creating a Hello Kotlin application, I was greeted with this error on startup.

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
Configuration problem: @Configuration class 'KotlinDemoApplication' may not be final. 
Remove the final modifier to continue.
Offending resource: org.example.snippet.kotlindemo.KotlinDemoApplication
	at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:72) ~[spring-beans-5.3.9.jar:5.3.9]
	at org.springframework.context.annotation.ConfigurationClass.validate(ConfigurationClass.java:217) ~[spring-context-5.3.9.jar:5.3.9]
	at org.springframework.context.annotation.ConfigurationClassParser.validate(ConfigurationClassParser.java:216) ~[spring-context-5.3.9.jar:5.3.9]

The error message had the answer in it, but that seemed to be too obvious. All classes are final by default in Kotlin, unless explicitly specified with the open keyword.

I may have missed something in the config when using the Spring Initalizer or something was overlooked in the generated project file from Spring Initializer.

But this runtime error was solved by adding the open keyword infront of the KotlinDemoApplication.

Notes

I had to install a few additional plugins to use Kotlin with Eclipse, which was not documented in any of the related websites.

  • Eclipse Weaving Service
  • AspectJ Development Tools
  • Kotlin (Kotlin language support for Kotlin 1.4.0)
  • Kotlin-gradle

References

Creating technical and design tutorials has been one of the things that I have been interested in for a long time. It is a method to document my learning as well as to share my perspective and understanding.

While I mostly note these down on my blog once in a while, it was more difficult to publish them online way back in 2006.

Traffic Lights

I was thinking of the possibility to capture a traffic light with all the lights illuminated on it for a long time.

Although I have been maintaing my blog on Github Pages, powered by Jekyll since 2015, it was just recently that I finally bought a domain name for my own.

Random Contact 4.0

An update to the Android app Random Contact had been in the plans for a couple of years now.

Year 2020 in Review

2020 was looked upon as the start of a new decade and we were all looking forward to a great and prosperous year. However it has been more of a reset.

It has given us a chance to pause the rush, evaluate life and our priorities. We have to stand together, think and care for everyone.