Hi there.
I am failing to upgrade a rather simple Maven based project to recent
versions of Java, Springboot and IPF.
Here are the crucial parts of the Maven pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.4</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.openehealth.ipf</groupId>
<artifactId>ipf-dependencies</artifactId>
<version>4.8.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
The Springboot Application class is Standard.
@EnableAutoConfiguration
@ComponentScan(basePackages={"com.myapp"})
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(XdsApplication.class, args);
}
}
When running the JAR I end up with this rather useless error:
openjdk version "17.0.10" 2024-01-16 LTS
OpenJDK Runtime Environment Zulu17.48+15-CA (build 17.0.10+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.48+15-CA (build 17.0.10+7-LTS, mixed mode, sharing)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
Caused by: java.lang.NoSuchMethodError: 'org.springframework.core.io.support.SpringFactoriesLoader org.springframework.core.io.support.SpringFactoriesLoader.forDefaultResourceLocation(java.lang.ClassLoader)'
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:483)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:479)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:293)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:273)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
at com.myapp.MyApplication.main(MyApplication.java:14)
... 7 more
The obvious and expected devices to "fix dependencies" don't help here.
As I mentioned: I utilize the Spring parent POM and the "IPF dependencies" here,
as shown in the POM snippet.
Going back to JDK 8, Springboot 2.1.18.RELEASE and IPF 3.6.5 works.
Apart from this particular error:
is there any in-depth documentation on how to correctly
write your POM to safely bring IPF and Springboot into a working application?
Thanks.
Marcus