I have a spring boot project which works fine when I run the main class from IntelliJ GUI. But when I try to run the same program using the command line using the command java -jar my-data-server.jar
or java -cp my-data-server.jar com.company.data.DataServer
I get the below error
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
at com.company.data.DataServer.main(DataServer.java:89)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 1 more
I am attaching the build.gradle
shadowJar {
zip64 true
classifier = null
manifest {
attributes 'Main-Class': 'com.company.data.DataServer'
}
transform(AppendingTransformer) {
resource = 'META-INF/spring.handlers'
}
transform(AppendingTransformer) {
resource = 'META-INF/spring.schemas'
}
transform(AppendingTransformer) {
resource = 'META-INF/spring.tooling'
}
transform(AppendingTransformer) {
resource = 'META-INF/services/com.sun.tools.xjc.Plugin'
}
}
Below are springboot related dependencies Spring Boot version is 2.3.5.RELEASE.
implementation group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.3.5.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.3.5.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.3.5.RELEASE'
compile "org.springframework:spring-context-support:5.2.22.RELEASE"
compile "org.springframework:spring-tx:5.2.22.RELEASE"
To further clarify – I get the Main-Class: com.company.data.DataServer
in the MANIFEST.MF
What am I missing here?
Edit 1 – I tried using the plugin org.springframework.boot
But it failed as my gradle version is not compatible. I can’t upgrade my gradle or Java version as it is part of a bigger project.
This is the error I got while trying to apply the plugin
org.gradle.api.plugins.InvalidPluginException: An exception occurred applying plugin request [id: 'org.springframework.boot', version: '2.3.5.RELEASE']
Caused by: org.gradle.api.GradleException: Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). The current version is Gradle 4.8
10