【发布时间】:2013-10-14 13:04:54
【问题描述】:
非常感谢您在从 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时失败。
伙计们,你们认为我错过了什么或搞砸了什么?
感谢您的帮助!
特维尔
【问题讨论】:
-
您是否将类路径设置为
*JOB级别或*SYS级别? -
嗨,Benny,我都试过了。我在我的 RPG 代码中嵌入了一个命令,它设置类路径以包含我的 jar 文件。在运行程序之前,我还手动更改了 CLASSPATH。
-
"如果您使用环境变量来控制 JVM 的启动方式,则在任何 RPG 程序调用 Java 方法之前,您必须确保环境变量存在于作业中。" - 如果您的 RPG 程序在默认激活组中,这一点很重要。 More information.
标签: java noclassdeffounderror rpg jtopen