Javaソースの句読点は、IFSにコピーされたときにアクセント文字に変更されました
-
14-10-2019 - |
質問
Javaメソッドを使用するRPGLEプログラムを実行しようとしています。 Javaコード(xxxx.javaファイル)をシステム(Windows XP)からFTPを介してAS/400 IFSディレクトリに転送しています。 IFSに転送した後、ファイルCCSIDは819として表示されます。
QSHで.javaファイルをコンパイルしていますが、エラーは表示されません。ただし、2つのクラスファイルが生成されます。すなわち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
私が見たとき Mailer.java
オプション5を押してIFSのファイル、次のようなシンボル {
, }
, [
, ]
, !
, /
, \
などは他のシンボルに変更されます。
そのため、PLZはこれのためのいくつかの解決策を提案しているので、このプログラムを実行できます。 .javaファイルを別の文字に変更せずに.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...
解決
QSHのJavacでソースをコンパイルできる場合、Javaソースコード自体はJavacに受け入れられるように転送されました(コードページ変換を行わず、819年に読み取られると予想されます)。メーラー$ 1.クラスは、メーラーの匿名のクラス(新しいfoobar()が{} blockを備えた)から来ています。
それがあなたに間違っているように見えることは、AS/400システムが使用されているキャラクターセットの5250エミュレーターに同意していない可能性が高いため、私は(Javacが機能する限り)心配しません。
ただし、エラーメッセージは、RPGヘッダーの間に、あなたが呼び出すJavaメソッドと実際にそこにあるものを説明する不一致があることを示しています。私には、「demo.mailer.sendsimplemail(string、string、string、string)」を呼び出したいと思うように見えます。
他のヒント
IMO ISERIESでコードをコンパイルする理由はまったくありません...ワークステーションでコードを開発、テスト、およびビルドします...その後、ホストにアプリケーションジャーを展開してテストします。