์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค์ด ์์ด์, ์ค๋๋ง์ ํตํฉ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๊ณ ์คํํ๋๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์คํ๋ง ์ดํ๋ฆฌ์ผ์ด์ ์์ฒด ์คํ์๋ ๋ฌธ์ ๊ฐ ์๊ณ ํ ์คํธ๋ ์ ์์ ์ผ๋ก ์คํ๋์ง๋ง, ํ ์คํธ ๋ก๊ทธ์๋ ์์ฒญ๋ ์์ ์๋ฌ ๋ก๊ทธ๊ฐ ๋จ๊ณ Build ๊ฒฐ๊ณผ์๋ ์๋ฌ๊ฐ ๊ฐ๋ํ๋ค.
ํธ๋ฌ๋ธ ์ํ
ํ์ ๋ถ์
์๋ฌ ๋ก๊ทธ๊ฐ ์์ฒญ๋๊ฒ ๊ธธ์ง๋ง ๊ฒฐ๊ตญ ์๋ ๋ก๊ทธ๊ฐ ๋ฐ๋ณต๋๊ณ ์์๋ค.
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/security/ec/SunEC$1 with JaCoCo 0.8.8.202204050719/5dcf34a.
at org.jacoco.agent.rt.internal_b6258fc.CoverageTransformer.transform(CoverageTransformer.java:94)
at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:610)
~~~~
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/security/ec/SunEC$1 with JaCoCo 0.8.8.202204050719/5dcf34a.
at org.jacoco.agent.rt.internal_b6258fc.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
at org.jacoco.agent.rt.internal_b6258fc.core.instr.Instrumenter.instrument(Instrumenter.java:111)
at org.jacoco.agent.rt.internal_b6258fc.CoverageTransformer.transform(CoverageTransformer.java:92)
... 176 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65
at org.jacoco.agent.rt.internal_b6258fc.asm.ClassReader.<init>(ClassReader.java:199)
at org.jacoco.agent.rt.internal_b6258fc.asm.ClassReader.<init>(ClassReader.java:180)
at org.jacoco.agent.rt.internal_b6258fc.asm.ClassReader.<init>(ClassReader.java:166)
at org.jacoco.agent.rt.internal_b6258fc.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
at org.jacoco.agent.rt.internal_b6258fc.core.instr.Instrumenter.instrument(Instrumenter.java:77)
at org.jacoco.agent.rt.internal_b6258fc.core.instr.Instrumenter.instrument(Instrumenter.java:109)
... 177 more
๋ ๊ฐ์ง ๋ฌธ์ฅ ์ ๋๊ฐ ์๋ฌ์ ํต์ฌ์ผ๋ก ๋ณด์ธ๋ค.
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/security/ec/SunEC$1 with JaCoCo 0.8.8.202204050719/5dcf34a.
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65
์์ธ ๋ถ์
๋ก๊ทธ ์์ผ๋ก๋ JaCoCO๊ฐ ์์ธ์ธ ๊ฒ ๊ฐ์ ํด๋น ๋ก๊ทธ๋ฅผ ํตํด ์ฐพ์๋ดค์ง๋ง ๊ทธ๋ด๋ฏํ ๋ด์ฉ์ ์ ํ ์์๋ค. Unsupported class ~
๋ฅผ ํตํด์ ์ฐพ์๋ณด๋, ์คํ๋ง ๋ถํธ์ ๋ง์ง ์์ JDK๋ฅผ ์ฌ์ฉํด์๋ผ๊ณ ํ์ง๋ง ์คํ๋ง ์ดํ๋ฆฌ์ผ์ด์
์คํ์๋ ๋ฌธ์ ๊ฐ ์๊ณ ํ๋ก์ ํธ ์์ฑํ ๋ Spring boot 3 ๋ฒ์ ์ ๋ง๋ JDK๋ก ์ค์นํ๋ค. ํน์ ๋ชฐ๋ผ JDK๋ฅผ ๋ณ๊ฒฝํด๋ดค๋๋ฐ, ์คํ๋ ค ๋ ๋ฎ์ ๋ฒ์ ์ JDK๋ก ๋ณ๊ฒฝํ์ ํด๊ฒฐ๋์๋ค.
- JDK 20 ์ ์ฉ → โ Unsupported class file major version 64
- JDK 21 ์ ์ฉ → โ Unsupported class file major version 65
- JDK 17 → โ ์ฑ๊ณต
์์ธ์ด ํ์ ๋์ง ์์ ํผ๋์ค๋ฌ์ ๋๋ฐ, ํนํ JaCoCo๊ฐ ๋๋ฌด ๋ฌ๊ธ์์ด ๋ก๊ทธ์ ์์ด์ ๋ ํผ๋์ค๋ฌ์ ๋ค. ๊ณ ๋ฏผํ๋ ์ค JaCoCO์ ํธํ๋์ง ์๋ JDK๋ผ๋ ๋ป์ ์๋๊น ์์ฌ์ด ๋ค์ด์ JacCoCo ํธํ์ฑ์ ์ฐพ์๋ดค๋๋ ์ ๋ต์ด์๋ค. ์ฌ์ฉํ๊ณ ์๋ 0.8.8์์ JDK 17, 18์ ์ง์ํ๊ธฐ ์์ํ์ผ๋, ์ง์ํ์ง ์๋ JDK๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
ํ๋ก์ ํธ SDK๋ก ์ฌ์ฉ๋๋ JDK ๋ฒ์ ์ ์ธํ ๋ฆฌ์ง์์ ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
File > Project Structure > Project Settings > Project
SDK
๋ณ๊ฒฝLanguage level
๋ณ๊ฒฝ
2. Intellij IDEA > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM
๋ณ๊ฒฝ
๊ทธ๋ผ ํด๊ฒฐ๋๋ค. ๐ฅณ
JDK ๋ฒ์ ํธํ ํธ๋ฌ๋ธ์ํ
์ ๋ํ ์๋ฃ๋ ์์ง๋ง, JaCoCo๋ก ์ธํด JDK ๋ฒ์ ํธํ์ ๋ํ ์๋ฃ๋ ์์ด์ ์์ฑํด๋ณด์๋ค.