从RPG调用Java,ClassNotFoundError为除了我以外的所有用户

时间:2013-10-14 13:04:54

标签: java noclassdeffounderror rpg jtopen

我非常感谢您在从RPG调用Java方法时对ClassNotFoundError的帮助。当除了我以外的任何其他用户尝试运行我的程序时,会发生这种情况。 它实际上似乎是CLASSPATH或访问jar文件的问题,但我也试过了这个方面。

说明: 我有一个RPG程序,它在jar文件中调用java方法。我的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"

上面的签名也与我调用的方法相同。 Java抱怨的类似乎是AS400的类,还是我的类?我可以看到AS400类是公开的。类对象是我的类的构造函数成功创建的。它在调用main方法invokeApiPgm时失败。

你认为我失踪或搞砸了什么?伙计们?

感谢您的帮助!

Tewelle

2 个答案:

答案 0 :(得分:0)

CL程序如何显式设置类路径,然后调用您的RPG程序?

CLP:

PGM

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

ENDPGM

This page也可能有所帮助。

答案 1 :(得分:0)

一开始我将所有Jars和文件放在同一个外部Jar中,我从Eclipse导出并将Jar的路径添加到我的CLASSPATH中对我来说不起作用。但是,我不知道为什么,在将JT400.Jar单独取出然后将其路径包含在CLASSPATH中之后,它起作用,就像Benny的回答一样,另一个单独包含在主项目jar中工作正常。

谢谢Benny!