我正在尝试运行一个使用java方法的RPGLE程序。我正在通过 FTP 将 java 代码(xxxx.java 文件)从我的系统(Windows XP)传输到 AS/400 IFS 目录。传输到IFS后,文件CCSID显示为819。
我正在 QSH 中编译 .java 文件,没有显示错误。但是会生成两个class文件。 IE。
Mailer.java
→ Mailer.class
和 Mailer$1.class
但是当我调用 RPGLE 程序时,会显示 java 异常...
Java exception received when calling Java method (C G D F)...
Application error. RNX0301 unmonitored by MAILERDEMO at statement 000000500
当我按选项 5 在 IFS 中看到 Mailer.java
文件时,出现 {
、 }
、[< 等符号
、 ]
、 !
、 /
、 \
等改为其他一些符号。
所以请建议我一些解决方案,以便我可以运行这个程序。如何将.java文件传输到IFS而不将字符更改为不同的字符?
这里有一些细节......
系统 CCSID 值 - 819
作业 CCSID - 273
我的Java源代码在IFS目录中:
// Load Properties File
if (is |= null) ä
try ä
properties = new Properties();
properties.load(is);
ü
catch (Exception e) ä
System.err.println("Error " + "Ö"" + e.getLocalizedMessage()
+ "Ö"" + " loading AS/400 Connection Properties.");
throw new RuntimeException(e);
ü
ü
// Assume properties passed as system properties
else ä
properties = System.getProperties();
ü
运行 RPGLE 程序时显示 Java 异常:
Message ID . . . . . . : RNQ0301 Severity . . . . . . . : 99
Message type . . . . . : Inquiry
Date sent . . . . . . : 12/30/10 Time sent . . . . . . : 11:31:57
Message . . . . : Java exception received when calling Java method (C G D
F).
Cause . . . . . : RPG procedure MAILERDEMO in program SAHOON1/MAILERDEMO
received Java exception "java.lang.NoSuchMethodError: sendSimpleMail" when
calling method "sendSimpleMail" with signature
"(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)L
java.lang.String;" in class "demo.Mailer".
Recovery . . . : Contact the person responsible for program maintenance to
determine the cause of the problem.
Possible choices for replying to message . . . . . . . . . . . . . . . :
D -- Obtain RPG formatted dump.
More...
最佳答案
如果您可以在 QSH 中使用 javac 编译源代码,那么 Java 源代码本身将以 javac 可接受的方式传输(它不进行代码页转换,并期望读取的字节为 819)。 Mailer$1.class 来自 Mailer 中的匿名类(后面带有一个 {} block 的新 FooBar())。
这对你来说看起来不正确,然后我希望是因为 AS/400 系统很可能与你的 5250 模拟器在使用的字符集上不一致,而且我不会担心(只要 javac 工作) .
但是,您的错误消息表明,描述您要调用的 Java 方法的 RPG header 与实际存在的 header 之间存在不匹配。对我来说,您似乎想调用“demo.Mailer.sendSimpleMail(String, String, String, String)”,它应该返回一个字符串,但您没有这样的方法。
关于character-encoding - 复制到 IFS 时,Java 源中的标点符号更改为重音字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561875/