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コードが正常に動作します。 コードは以下のようなもので、間違っている必要があります
public class NumberToWord
{
.....
.
.
public static String strconvert(String nms) {
.
.
.
return nms;
}
}
マイRPGLEコードは、これで、
/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メソッドの方法は、デバッグ、例外がgetNMTW機能で発生した場合に、正常に動作します。
CLASSPATHは既に設定されています。私はNoClassFoundエラーの代わりにNoSuchMethodErrorを取得しているので、その素晴らしいと思います。