character-encoding - 复制到 IFS 时,Java 源中的标点符号更改为重音字母

标签 character-encoding ftp ibm-midrange rpgle ibm-ifs

我正在尝试运行一个使用java方法的RPGLE程序。我正在通过 FTP 将 java 代码(xxxx.java 文件)从我的系统(Windows XP)传输到 AS/400 IFS 目录。传输到IFS后,文件CCSID显示为819。

我正在 QSH 中编译 .java 文件,没有显示错误。但是会生成两个class文件。 IE。 Mailer.javaMailer.classMailer$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/

相关文章:

在变量中存储 cmdlet 响应时出现 PowerShell 编码问题

linux - 如何在 linux 中使用 shell 脚本登录到 ftp 服务器?

java - 连接两个unix服务器并使用java程序将数据从服务器推送到服务器

java - 对 as400 的可调用语句不起作用

ibm-midrange - 使用 SQL 添加列后如何更新逻辑文件定义

bash - 为单个用户设置默认 PASE IBM i shell

php - 在数据库中安全存储 HTML,而不影响字符编码

C# ASP.NET MVC 资源文件的字符串在 HTML 源中是一种奇怪的编码格式

PHP PDO setAttribute 和错误处理

c# - 列出从在线 FTP 目录到 ListView C# 的所有文件