2

Javaメソッドを使用するRPGLEプログラムを実行しようとしています。システム(Windows XP)からFTPを介してAS / 400 IFSディレクトリにJavaコード(xxxx.javaファイル)を転送しています。それをIFSに転送した後、ファイルCCSIDは819として表示されます。

QSHで.javaファイルをコンパイルしていますが、エラーは表示されません。ただし、2つのクラスファイルが生成されます。すなわち Mailer.javaMailer.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

Mailer.javaオプション5を押してIFSでファイルを表示すると、、、、、、、などの記号が{他の記号に変更されます。}[]!/\

したがって、plzは、このプログラムを実行できるように、これに対するいくつかの解決策を提案してくれます。文字を別の文字に変更せずに.javaファイルをIFSに転送するにはどうすればよいですか?

ここにいくつかの詳細があります.....

システムCCSID値-819

ジョブCCSID-273

IFSディレクトリのJavaソースコード:

// 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... 
4

2 に答える 2

3

QSHでjavacを使用してソースをコンパイルできる場合は、Javaソースコード自体がjavacに受け入れられるように転送されました(コードページ変換は行われず、読み取られたバイト数は819であると想定されます)。Mailer $ 1.classは、Mailerの匿名クラス(後で{}ブロックを持つ新しいFooBar())から取得されます。

AS / 400システムが使用されている文字セットで5250エミュレーターに同意していない可能性が高いため、正しくないように見えますが、心配する必要はありません(javacが機能している限り)。

ただし、エラーメッセージは、呼び出すJavaメソッドを説明するRPGヘッダーと実際に存在するメソッドとの間に不一致があることを示しています。私には、文字列を返す必要がある「demo.Mailer.sendSimpleMail(String、String、String、String)」を呼び出したいように見えますが、そのようなメソッドはありません。

于 2010-12-30T13:31:24.460 に答える
1

IMOは、iSeriesでコードをコンパイルする理由はまったくありません...ワークステーションでコードを開発、テスト、およびビルドします...次に、ホストにアプリケーションjarをデプロイしてテストします。

于 2010-12-30T15:24:07.323 に答える