다음 오류가 발생하는 RPGLE에서 Java 메소드를 호출해야합니다. 프로토 타입을 작성한 방식이 잘못되었다고 생각합니다.RPGLE (as400)에서 java 메소드 호출
Cause . . . . . : RPG procedure TESTJ in program TESTLIB/TESTJ received
Java exception "java.lang.NoSuchMethodError:
NumberToWord.strconvert([B)Ljava/lang/String;" when calling method
"strconvert" with signature "([B)Ljava.lang.String;" in class
"NumberToWord".
내 Java 코드가 정상적으로 작동합니다. 코드는 디버그, 예외가 getNMTW 기능에서 발생하는 경우
/free
ctl-opt dftactgrp(*no) actgrp(*caller);
dcl-s String1 object(*java:'java.lang.String');
dcl-s String2 object(*java:'java.lang.String');
dcl-s str varchar(250);
dcl-s JAVA_String object(*JAVA :'java.lang.String');
dcl-pr JAVA_toString like(JAVA_String)
extproc(*JAVA :
'java.lang.String' :
*constructor);
value varchar(65535) const;
end-pr;
dcl-pr getNMTW static like(JAVA_String)
extproc(*JAVA :
'NumberToWord' :
'strconvert');
value varchar(65535) const;
end-pr;
dcl-pr getBytes char(250) extproc(*java:'java.lang.String':'getBytes');
end-pr;
String1 = JAVA_toString('543'); //works fine
str = getBytes(String1); //works fine
String2 = getNMTW('12345'); //exception occurs at this point
str = getBytes(String2);
*INLR = *ON;
/END-FREE
JAVA_toString 및 getBytes 방법은 잘 작동, 잘못한다
public class NumberToWord
{
.....
.
.
public static String strconvert(String nms) {
.
.
.
return nms;
}
}
내 RPGLE 코드는,이, 아래 같은 것입니다.
CLASSPATH가 이미 설정되었습니다. 나는 NoClassFound 오류 대신 NoSuchMethodError를 얻고 있기 때문에 괜찮다고 생각한다.