2013-10-14 1 views
1

RPG에서 Java 메소드를 호출하는 동안 ClassNotFoundError으로 도움을 주시면 감사하겠습니다. 이것은 나를 제외하고 다른 사용자가 내 프로그램을 실행하려고 할 때 발생합니다. 사실 말 그대로 CLASSPATH 나 jar 파일에 대한 액세스에 문제가있는 것처럼 보이지만 그 측면에서도 시도했습니다.RPG에서 Java 호출, 나 이외의 모든 사용자에 대해 ClassNotFoundError

설명 : jar 파일에서 java 메소드를 호출하는 RPG 프로그램이 있습니다. 내 CLASSPATH에는 올바른 jar가 포함되어 있습니다 (JtOpen jar 파일). 그것은 녹색과 검은 색 화면 (Iseries 세션 관리자)에서 RPG 프로그램을 실행할 때 완벽하게 작동합니다. 다른 사용자가 같은 방법으로 실행하려고하면 다음과 같은 오류 메시지가 나타납니다.

RPG Procedure received Java Exception java.lang.NoClassDefFoundError: com.ibm.as400.access.AS400 when calling method "invokeApiPgm" with signature "([Ljava.lang.String;Ljava.lang.String;I[Ljava.lang.String;)Z" in class "callIceApi.CallIceApiPgm".

위의 서명은 내가 호출하는 메소드의 서명과 동일합니다. 자바가 불평하고있는 클래스가 AS400의 클래스처럼 보이거나 내 것이 될 수 있습니까? AS400 클래스는 공개되어 있습니다. 클래스 개체가 내 클래스의 생성자에 의해 성공적으로 만들어졌습니다. 메인 메소드 invokeApiPgm을 호출 할 때 실패합니다.

제가 누락되었거나 어수선해 진다고 생각합니까?

도움 주셔서 감사합니다.

Tewelle

+0

'* JOB' 또는'* SYS' 레벨에서 클래스 경로를 설정 했습니까? –

+0

안녕 베니, 나는 그들 모두를 시도했다. 내 jar 파일을 포함하도록 클래스 경로를 설정하는 내 RPG 코드에 포함 된 명령이 있습니다. 또한 프로그램을 실행하기 전에 CLASSPATH를 수동으로 변경했습니다. – tewemit

+0

"환경 변수를 사용하여 JVM 시작 방법을 제어하는 ​​경우 RPG 프로그램이 Java 메소드를 호출하기 전에 환경 변수가 작업에 존재하는지 확인해야합니다." - 이는 RPG 프로그램이 기본 활성 그룹에있는 경우 중요합니다. [추가 정보] (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.pgmgd.doc/c0925076175.htm). –

답변

0

어떻게 명시 적으로 RPG 프로그램을 호출 한 후 클래스 경로를 설정하고 CL 프로그램에 대한?

은 CLP는 :

PGM 

ADDENVVAR ENVVAR('CLASSPATH') VALUE('.:/dir1:/dirA/dirB:/javaToolkit/jt400.jar') LEVEL(*JOB) 
CALL PGM(MYLIB/MYPGM) 

ENDPGM 

This page도 도움이 될 수 있습니다.

+0

처음에는 Eclipse에서 내 보낸 동일한 외부 Jar 파일에 모든 Jar 파일과 파일을 가지고 있었고 그 Jar 파일 경로를 사용하여 나에게 적합하지 않았습니다. 그러나 나는 왜 JT400.Jar를 별도로 꺼내고 나서 Benny의 대답이 올바르게 작동하는지 CLASSPATH에 경로를 포함 시켜서 사용했는지는 알지 못합니다. – tewemit

+0

@tewemit - 다행 이군! –

+0

베니 감사합니다. IBM i 시스템에 연결하기 위해 JtOpen을 사용하는 것에 대한 또 다른 최적화 질문이 있습니다. 너도 잘하니? 나는 그것을 다른, 관련된, 화제에서 배치 할 것이다. – tewemit

0

처음에는 Eclipse에서 내 보낸 동일한 외부 Jar 파일에 모든 Jar 파일을 가지고 있었고 Jar 파일 경로를 CLASSPATH에 추가하면 나에게 적합하지 않았습니다. 그러나 나는 왜 JT400을 가져간 후에 작동했는지 알지 못합니다. Jar를 별도로 밖으로 내 보낸 다음 CLASSPATH에 경로를 포함 시키면 Benny의 답과 같이 주 프로젝트 병에 별도로 포함됩니다.

감사합니다.

관련 문제