Almost-Native

오라클 Java 에러 ORA-29532: Java call terminated by uncaught Java exception: java/lang/UnsupportedClassVersionError (Unsupported major.minor version 55.0) 본문

Java 프로그램 개발, IT

오라클 Java 에러 ORA-29532: Java call terminated by uncaught Java exception: java/lang/UnsupportedClassVersionError (Unsupported major.minor version 55.0)

2023. 8. 23. 23:35

Java 프로그램을 오라클 DB에 로딩한 후 실행할 때, 아래와 같이 ORA-29532 에러가 나는 경우가 있습니다.

주목할 부분은 Unsupported major.minor version 문구 입니다.

 

SQL>
SQL> CALL helloworld() INTO :myString;
CALL helloworld() INTO :myString
     *
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception: java/lang/UnsupportedClassVersionError
: Hello (Unsupported major.minor version 55.0)

 

로딩할 클래스를 컴파일 할 때 사용한 JDK 버전이 다른 경우에 이런 에러가 발생합니다.

 

1)
export JAVA_HOME=$ORACLE_HOME/jdk

2)
export JAVA_HOME=/usr/lib/jvm/jdk-11-oracle-x64

export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$MON:$ORACLE_HOME/jdbc/lib/ojdbc8.jar:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CLASSPATH

 

Java 프로그램을 컴파일 할 때 위와같이 자바 환경을 잡아주게 되는데, 이때 JAVA_HOME 을 2) 와 같이 잡아주게 되면 DB와 서버로 다르기 때문에 에러가 납니다. 1)과 같이 잡아주면 JDK 를 DB 꺼를 사용하기 때문에 버전문제가 발생하지 않습니다.

 

 

DB 내에서 dbms_java.get_jdk_version() 을 조회하면 Oracle DB내에서 사용하는 JDK 버전을 확인할 수 있습니다.

OS 환경에서 잡혀있는 Java 버전과 비교해봐서 같은 버전인지 확인하면 됩니다.

 

Comments