1

我非常感谢您ClassNotFoundError在从 RPG 调用 Java 方法时提供的帮助。当除我之外的任何其他用户尝试运行我的程序时,就会发生这种情况。从字面上看,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

伙计们,你认为我错过了什么或搞砸了什么?

谢谢你的帮助!

特韦勒

4

2 回答 2

0

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

谢谢本尼!

于 2013-10-17T14:38:29.090 回答
0

一个明确设置类路径然后调用您的 RPG 程序的 CL 程序怎么样?

中电:

PGM

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

ENDPGM

此页面也可能会有所帮助。

于 2013-10-14T19:04:54.803 回答