JBoss EAP 7 ์ค์น ๋๋ ๊ธฐ๋ ์ค
java.lang.UnsupportedClassVersionError๊ฐ ๋ฐ์ํ๋ค๋ฉด, ํ์ฌ ์๋ฒ์ ์ค์ ๋ Java ๋ฒ์ ์ด JBoss๊ฐ ์๊ตฌํ๋ ์ต์ ์ฌ์(JDK 1.8)๋ณด๋ค ๋ฎ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ฌ ๋ฉ์์ง์major.minor version์ซ์๋ฅผ ํตํด ์์ธ์ ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
1. ๋ฌธ์ ํ์ ๋ฐ ์์ธ ๋ถ์
JBoss ์ค์น ์คํฌ๋ฆฝํธ ์คํ ์ ์๋์ ๊ฐ์ ์๋ฌ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ฉฐ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.
Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/ibm/websphere/... : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
...
์์ธ (Root Cause)
์ด ์๋ฌ๋ ์ปดํ์ผ๋ ํด๋์ค ํ์ผ์ ๋ฒ์ (Target JVM)๋ณด๋ค ํ์ฌ ์คํ ์ค์ธ JVM ๋ฒ์ (Runtime)์ด ๋ฎ์ ๋ ๋ฐ์ํฉ๋๋ค.
- JBoss EAP 7.x ์๊ตฌ์ฌํญ: ์ต์ JDK 1.8 ์ด์
- ํ์ฌ ์๋ฒ ์ํฉ: JDK 1.7 ์ดํ๊ฐ ์ค์น๋์ด ์๊ฑฐ๋
JAVA_HOME์ด ๊ตฌ๋ฒ์ ์ ๊ฐ๋ฆฌํค๊ณ ์์
2. ๋ฒ์ ๋งคํ ํ ์ด๋ธ (Class File Format)
์๋ฌ ๋ฉ์์ง์ ๋จ๋ ์ซ์(52.0, 51.0 ๋ฑ)๋ Java ํด๋์ค ํ์ผ ํฌ๋งท์ ๋ฉ์ด์ ๋ฒ์ ์ ์๋ฏธํฉ๋๋ค. ์๋ ํ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ์ฌ ํ์ํ Java ๋ฒ์ ์ ํ์ธํ์ญ์์ค.
| Java Version (SE) | Major Version (Hex) | Major Version (Dec) |
|---|---|---|
| Java 14 | 0x3A | 58 |
| Java 13 | 0x39 | 57 |
| Java 12 | 0x38 | 56 |
| Java 11 | 0x37 | 55 |
| Java 9 | 0x35 | 53 |
| Java 8 | 0x34 | 52 |
| Java 7 | 0x33 | 51 |
| Java 6 | 0x32 | 50 |
์๋ฌ ๋ฉ์์ง๊ฐ
Unsupported major.minor version 52.0์ด๋ผ๋ฉด, ํด๋น ํ๋ก๊ทธ๋จ์ Java 8๋ก ์ปดํ์ผ๋์์ผ๋ฏ๋ก ์๋ฒ์๋ Java 8 ์ด์์ด ์ค์น๋์ด์ผ ํฉ๋๋ค.
3. ํด๊ฒฐ ๋ฐฉ๋ฒ (Solution)
1) ํ์ฌ Java ๋ฒ์ ํ์ธ
java -version
์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ 1.7.x ์ดํ๋ผ๋ฉด JDK ์
๊ทธ๋ ์ด๋๊ฐ ํ์ํฉ๋๋ค.
2) JDK ์ค์น ๋ฐ ํ๊ฒฝ ๋ณ์ ๋ณ๊ฒฝ
์๋ฒ์ JDK 1.8 ์ด์์ ์ค์นํ ํ, JBoss๊ฐ ์ฐธ์กฐํ๋ ์ค์ ํ์ผ์์ JAVA_HOME ๊ฒฝ๋ก๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
- Standalone ๋ชจ๋:
[EAP_HOME]/bin/standalone.conf(Windows๋ .bat) - Domain ๋ชจ๋:
[EAP_HOME]/bin/domain.conf(Windows๋ .bat)
# standalone.conf ์์
# JAVA_HOME="/usr/lib/jvm/java-1.7.0" <-- ๊ธฐ์กด (์ฃผ์ ์ฒ๋ฆฌ)
JAVA_HOME="/usr/lib/jvm/java-1.8.0" <-- ์ ๊ท ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝ
Next Step:
JDK ๋ฒ์ ์ ์ฌ๋ฆฐ ํ์๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์
(WAR/EAR)์ด ์ Java ๋ฒ์ ์์ ์ ์์ ์ผ๋ก ๋์ํ๋์ง, -Xmx ๋ฑ ๋ฉ๋ชจ๋ฆฌ ์ต์
์ด ๋ณ๊ฒฝ๋ ๋ฒ์ ์ ๋ง๊ฒ ์ค์ ๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.