java stored procedure 에 loadjava 로 jar 파일 로드 시 java.lang.ClassNotFoundException 에러 문의

by 개미가불쌍해 posted Apr 18, 2023


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Red Hat Enterprise Linux release 9.1
CUBRID Ver.
CUBRID 11.2 (11.2.2.0705-4ea991d) (64bit release build for Linux) (Oct 28 2022 16:13:18)
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
openjdk version "1.8.0_352"


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

다음 순서로 작업 진행했습니다. 

 

1.

$CUBRID/conf/cubrid.conf 에 java_stored_procedure=yes 추가


2. 

vi HelloWorldJar.java

 

public class HelloWorldJar {
    public static String helloWorld() {
        return "Hello, World!";
    }
}

 

3. 

javac HelloWorldJar.java

jar -cvf0 HelloWorldJar.jar HelloWorldJar.class

loadjava demodb HelloWorldJar.jar

 

4. 

export CLASSPATH=$CUBRID/databases/demodb/java/HelloWorldJar.jar:.

 

env | grep CLASSPATH

CLASSPATH=/home/cubrid/CUBRID/databases/demodb/java/HelloWorldJar.jar:.

 

5. 

cubrid javasp start demodb

cubrid server start demodb

 

6. 

csql -u dba demodb

csql> create FUNCTION jar_Test()
RETURN string as language java name 'HelloWorldJar.helloWorld() return java.lang.String';

 

csql> select jar_Test() from db_root;

In line 1, column 19,

ERROR: Stored procedure execute error: java.lang.ClassNotFoundException: HelloWorldJar


0 command(s) successfully processed.
csql>

 

 

jar 파일의 경로를 $CUBRID/lib, $CUBRID/java 로 옮겨 보아도 현상은 마찬가지입니다. 

cubrid 11.2에서 CLASSPATH로 jar를 지정할 수 있는 방법이 뭔가요? 

매뉴얼을 모두 확인해봐도 해당 부분에 대한 내용이 없습니다. 

(jar가 아닌 class 파일로 loadjava 사용했을때는 정상적으로 동작합니다. jar 파일을 cubrid에 인식시킬 수 있는 방법이 궁금합니다. )

 

 

 


Articles

1 2 3 4 5 6 7 8 9 10