I understand that this question has been asked many times in Stack Overflow and I have researched many of them, so please check this.
vinays@Vinays-MacBook-Pro demo % java -jar target/spring-boot-hello-1.0.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601) vinays@Vinays-MacBook-Pro demo %
My pom file:
<?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> <artifactId>spring-boot-hello</artifactId> <packaging>jar</packaging> <name>Spring Boot Hello World Example</name> <version>1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.0</version> </parent> <properties> <java.version>1.8</java.version> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Both my maven.compiler.target
and maven.compiler.source
are set to 1.8 and i have java 1.8 running in my mac (M1).
java.class.version = 52.0 java.endorsed.dirs = /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/lib/endorsed java.ext.dirs = /Users/vinays/Library/Java/Extensions /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/lib/ext /Library/Java/Extensions /Network/Library/Java/Extensions /System/Library/Java/Extensions /usr/lib/java java.home = /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre java.io.tmpdir = /var/folders/46/7pq574c14f51kn1h8gjsz0hw0000gn/T/ java.library.path = /Users/vinays/Library/Java/Extensions /Library/Java/Extensions /Network/Library/Java/Extensions /System/Library/Java/Extensions /usr/lib/java . java.runtime.name = OpenJDK Runtime Environment java.runtime.version = 1.8.0_292-b10 java.specification.name = Java Platform API Specification java.specification.vendor = Oracle Corporation java.specification.version = 1.8 java.vendor = AdoptOpenJDK java.vendor.url = https://adoptopenjdk.net/ java.vendor.url.bug = https://github.com/AdoptOpenJDK/openjdk-support/issues java.version = 1.8.0_292 java.vm.info = mixed mode java.vm.name = OpenJDK 64-Bit Server VM java.vm.specification.name = Java Virtual Machine Specification java.vm.specification.vendor = Oracle Corporation java.vm.specification.version = 1.8 java.vm.vendor = AdoptOpenJDK java.vm.version = 25.292-b10 line.separator = n os.arch = x86_64 os.name = Mac OS X os.version = 10.16 path.separator = : socksNonProxyHosts = local|*.local|169.254/16|*.169.254/16 sun.arch.data.model = 64
I am not sure why I am still getting the issue.
Advertisement
Answer
The error indicates that the Spring class org.springframework.boot.loader.JarLauncher
has class version 61 (Java 17). Spring Boot 3 requires Java 17. You cannot use it on Java 8, even if you compile your own classes targeting Java 8.
If you want to use Spring Boot 3, you will need to upgrade to Java 17, otherwise you need to remain on Spring Boot 2.7.x or lower.