λ¦΄λ¦¬μ€ μ 보μ λ°λΌ μ΄ λ²μ μ΄ JDK 8 μ΄μμμ μλν κ²μΌλ‘ μμνμ§λ§ λ€μ μ€λ₯κ° λ°μν©λλ€.
java.lang.UnsupportedClassVersionError: com/github/benmanes/caffeine/cache/Caffeine has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 53.0
ν΄λμ€ λ²μ 55.0μ JDK 11μ΄λ―λ‘ JDK 8 μ΄μμμλ μλνμ§ μμ΅λλ€.
μ΄κ²μ λ€μ λ³ν© μμ²μμ λ°νμ‘μ΅λλ€. https://github.com/talsma-ict/enumerables/pull/242
@sjoerdtalsmaλ , μ£μ‘ν©λλ€. μΉ΄νμΈμλ jdk8κ³Ό jdk16 λͺ¨λμμ μ€νλλ λ²μ μ΄ μμ΅λλ€. 16μ μ΄μ GAμ΄λ―λ‘ Jdbiλ νΈνλλ Caffeine λ²μ μΌλ‘ μ κ·Έλ μ΄λνμ΅λλ€. λ¦΄λ¦¬μ€ λ ΈνΈμλ λ€μμ΄ μΈκΈλμ΄ μμ΅λλ€.
jdk16μ λν΄ μΉ΄νμΈ depλ₯Ό 3.0.1λ‘ μ κ·Έλ μ΄λν©λλ€(μ°Έκ³ : jdk8 μ¬μ©μλ 2.xλ‘ λ€μ κ΄λ¦¬ν΄μΌ ν¨).
κ·Έλ¬λ λλ κ·Έκ²μ΄ κ·Έλ€μ§ λμ λμ§ μλλ€λ λ° λμν©λλ€.
λλ λν μ¬κΈ°μ λ©λͺ¨λ₯Ό μΆκ°νμ΅λλ€: http://jdbi.org/#_java_compatibility
μ΄κ²μ μ¬μ©μμκ² λ μ μ릴 μ μλ λ°©λ²μ΄ μμ΅λκΉ? μΉ΄νμΈ λ²μ μ 2.xλ‘ λλ리면 λͺ¨λ κ²μ΄ μ λλ‘ μλνμ§λ§ λ¬Έμ κ° λ μμΌλ©΄ μλ €μ£Όμμμ€.
λλ μ΄κ²μ ν¨μ¬ λ λμ λκ² νκΈ° μν΄ λ¦΄λ¦¬μ€ λ ΈνΈλ₯Ό μΌλΆ μ λ°μ΄νΈνμ΅λλ€. μ¬κΈ°μ λ μν μ μλ κ²μ΄ μμΌλ©΄ μλ €μ£ΌμΈμ.
κ°μ¬ν©λλ€. λ€λ₯Έ λΆλ€μ΄ μ λ³΄λ€ μ‘°κΈ λ μ£Όμ κΉκ² μ½μΌμ
¨μΌλ©΄ μ’κ² μ΅λλ€.
λμκ² μ€μ λ‘ λ¬Έμ λ μλμ§λ§ λ΄ λΌμ΄λΈλ¬λ¦¬μ μ¬μ©μκ° μ‘°μ¬ν΄μΌ νλ κ² λΏλ§ μλλΌ μ΄κ²μ κ·Έλ€μ λν μ μ΄μ μ’
μμ±μ μ μ΄μ μ’
μμ±μ
λλ€ π .
λλ μΉ΄νμΈμ λ€μ΄κ·Έλ μ΄λνμ§ μκ³ νμ€ λ²μ μ κ³ μνκ³ JDK8 λ°μ΄νΈμ½λ μν°ν©νΈλ₯Ό κ³μ μ 곡νλ©΄μ μ΅μ JDKλ‘ λΉλνκΈ°λ‘ κ²°μ νμ΅λλ€. κ·Έλ° μμΌλ‘ λλ κ·Έλ€μ΄ μ€μ€λ‘ κ²°μ νλλ‘ λ§‘κΉλλ€.
κ°μ‘°ν΄μ£Όμ μ κ°μ¬ν©λλ€. μ΄μ μ΄ λ¬Έμ λ₯Ό λ§λ¬΄λ¦¬νκ² μ΅λλ€.
μ, μ΄κ²μ΄ μ΅μ’ μ¬μ©μμκ² νΈμλλ κ²μ μ λ§ μ κ°μ λλ€. κ·Έλ¬λ νλ₯ν κ°λ° κ²½νμ μνλ€λ©΄ μ΄μ Javaλ₯Ό μ κ·Έλ μ΄λν΄μΌ ν λμ λλ€. 8μμ μ€ννλ κ²μ μ μ λ μ΄λ €μμ§ κ²μ λλ€.)
λΌμ΄λΈλ¬λ¦¬μ νΌμ¦ module-info.java
λ©νλ°μ΄ν°λ₯Ό μΆκ°νλ λμ JDK 1.5 λ°μ΄νΈμ½λ νΈνμ±μ μ μ§νλ €κ³ νλ€κ³ μμν΄λ³΄μΈμ π
λλ μꡬ μ¬νμ μ΅μ κ³΅ν΅ λΆλͺ¨λ‘ μ ννλ €κ³ λ
Έλ ₯ν©λλ€.
μ£μ‘ν©λλ€. μΉ΄νμΈμλ jdk8κ³Ό jdk16 λͺ¨λμμ μ€νλλ λ²μ μ΄ μμ΅λλ€.
μ°Έκ³ λ‘ 2.xμ νΈνμ± λ¬Έμ λ sun.misc.Unsafe
λ₯Ό λΉνμ±ννλ €λ μ¬λλ€μκ²λ§ ν΄λΉλ©λλ€. μ΄λ κΈ°λ³Έμ μΌλ‘ JDK16μμ μ¬μ ν νμ©λμ§λ§ jlinkλ₯Ό ν΅ν΄ μ νν μ μμ΅λλ€. Unsafeλ Caffeine 3.0(λ체λ₯Ό ν΅ν΄)μμ λ μ΄μ νμνμ§ μμΌλ©° λ§μ€ν°(3.0.2 μμ )μμ μμ ν μ κ±°λμμ΅λλ€. JDK16μ κ°νλ μ‘μΈμ€ μ νμ μ°λ¦¬μκ² μν₯μ λ―ΈμΉμ§ μμμ§λ§ JDK8μ VarHandlesμ ν¨κ» μ 곡λμ§ μμμΌλ―λ‘ Unsafeλ₯Ό μ¬μ©νμ¬ λ©μ·μ΅λλ€(λλ νλμ μ‘μΈμ€ν λ 리νλ μ
μ¬μ©μΌλ‘ μΈν΄ μ±λ₯ λ¬Έμ κ° μλ AtomicReferenceFieldUpdater
λ§μ΄κ·Έλ μ΄μ
). .
μλ
νμΈμ @ben-manes, μ¬κΈ°μ μΆκ° 컨ν
μ€νΈμ κ°μ¬λ립λλ€. jdk16μ΄ μ¬μ ν Unsafeλ₯Ό μ¬μ©ν μ μλλ‘ νλ κ²μ μ¬μ€μ΄μ§λ§ κΈ°λ³Έμ μΌλ‘λ νμ©λμ§ μλλ€κ³ μκ°ν©λλ€. μ μ΄λ μ°λ¦¬μ κ²½μ°μλ κΈ°λ³Έμ΄ μ΄μ κ±°λΆμ΄λ―λ‘ --illegal-access=permit
λ₯Ό μ λ¬ν΄μΌ νμ΅λλ€. Jdbiκ° ν¬ν¨λ μλ‘μ΄ jdk16 νλ‘μ νΈμ λν "μ¦μ μ¬μ© κ°λ₯ν κ²½ν"μ΄ μ΄μ κ°μ λͺ»μκΈ΄ μ€μμΉλ₯Ό νμλ‘ νλ―λ‘ 3.xλ‘ μ
κ·Έλ μ΄λνλ κ²μ μνμ§ μμμ΅λλ€.
λ μ΄μ Unsafeλ₯Ό μ¬μ©νμ§ μλλ‘ μ λ°μ΄νΈν΄μ£Όμ μ κ°μ¬ν©λλ€. μ΄ κΈ°λ₯μ΄ μμ΄μ Έμ κΈ°μ©λλ€. :)
κ°μ₯ μ μ©ν λκΈ
μ°Έκ³ λ‘ 2.xμ νΈνμ± λ¬Έμ λ
sun.misc.Unsafe
λ₯Ό λΉνμ±ννλ €λ μ¬λλ€μκ²λ§ ν΄λΉλ©λλ€. μ΄λ κΈ°λ³Έμ μΌλ‘ JDK16μμ μ¬μ ν νμ©λμ§λ§ jlinkλ₯Ό ν΅ν΄ μ νν μ μμ΅λλ€. Unsafeλ Caffeine 3.0(λ체λ₯Ό ν΅ν΄)μμ λ μ΄μ νμνμ§ μμΌλ©° λ§μ€ν°(3.0.2 μμ )μμ μμ ν μ κ±°λμμ΅λλ€. JDK16μ κ°νλ μ‘μΈμ€ μ νμ μ°λ¦¬μκ² μν₯μ λ―ΈμΉμ§ μμμ§λ§ JDK8μ VarHandlesμ ν¨κ» μ 곡λμ§ μμμΌλ―λ‘ Unsafeλ₯Ό μ¬μ©νμ¬ λ©μ·μ΅λλ€(λλ νλμ μ‘μΈμ€ν λ 리νλ μ μ¬μ©μΌλ‘ μΈν΄ μ±λ₯ λ¬Έμ κ° μλAtomicReferenceFieldUpdater
λ§μ΄κ·Έλ μ΄μ ). .